MariaDB 可以在没有键长度的情况下对 BLOB 列进行索引吗?

时间:2021-07-27 05:50:46

标签: mysql mariadb

当我在两个 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,出现错误似乎是正确的。

如果您对出现这种差异的原因有任何线索,请告诉我。

0 个答案:

没有答案
相关问题