programing

마리아DB는 키 길이 없이 BLOB 열에 색인을 작성할 수 있습니까?

abcjava 2023. 9. 13. 22:16
반응형

마리아DB는 키 길이 없이 BLOB 열에 색인을 작성할 수 있습니까?

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

오류가 발생한 인스턴스의 OS는 Google Cloud Platform에서 실행되는 Ubuntu 20.04.2 LTS입니다.다른 인스턴스의 OS는 로컬 도커에서 실행되는 데비안 GNU/리눅스 10(버스터)입니다.

이미 논의된 바에 따르면 오류가 발생한 것은 맞는 것 같습니다.

왜 이런 차이가 발생하는지에 대한 단서가 있으면 알려주시기 바랍니다.

언급URL : https://stackoverflow.com/questions/68539582/can-mariadb-index-on-blob-column-without-a-key-length-or-not

반응형