当我在两个 MariaDB 实例上执行相同的语句时,一个出现错误,另一个没有。
我执行的语句是:
CREATE TABLE `session_tokens` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) unsigned NOT NULL,
`token` blob NOT NULL,
`inserted_at` datetime(6) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `session_tokens_token_index` (`token`) USING HASH,
KEY `session_tokens_user_id_index` (`user_id`),
CONSTRAINT `session_tokens_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
CREATE TABLE `users` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`login_name` varchar(255) NOT NULL,
`hashed_password` varchar(255) NOT NULL,
`inserted_at` datetime(6) NOT NULL,
`updated_at` datetime(6) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `users_login_name_index` (`login_name`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;
显示的错误信息:
ERROR 1170 (42000): BLOB/TEXT column 'token' used in key specification without a key length
两个实例的版本相同。
mariadb Ver 15.1 Distrib 10.3.29-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
出现错误的实例的操作系统是在 Google Cloud Platform 上运行的 Ubuntu 20.04.2 LTS。另一个实例的操作系统是在本地 Docker 上运行的 Debian GNU/Linux 10 (buster)。
根据the discussions already made,出现错误似乎是正确的。
如果您对出现这种差异的原因有任何线索,请告诉我。