programing

MariaDB는 255자의 고유 인덱스를 허용합니까?

goodjava 2022. 11. 10. 20:52

MariaDB는 255자의 고유 인덱스를 허용합니까?

이 에러는 10.0.29-MariaDB-0ubuntu0에서 반복적으로 발생합니다.16.04.1 Ubuntu 16.04

ERROR 1071(42000) 행: 지정된 키가 너무 깁니다. 최대 키 길이는 767바이트입니다.

타겟의 라인은, 통상은 다음과 같습니다.

name VARCHAR(255) NOT NULL UNIQUE,

VARCHAR(63)로 변경하면 에러가 해소됩니다.이것은 MariaDB의 버그입니까?

이 오류를 해결하려면 다음 중 하나를 수행합니다.

회피책: 다음 중 하나를 수행합니다.

  • 767이 아닌 3072바이트 제한에 대해 5.7.7(또는 그 이후)로 업그레이드
  • 바꾸다255로.191에서VARCHAR(값이 너무 길지 않다는 것을 확인)
  • ALTER .. CONVERT TO utf8--하지만, 이것은 이모지와 일부 중국인은 허용하지 않습니다.
  • 프리픽스 인덱스 사용(무작위 권장)
  • 재구성(5.6.3~5.7.6의 경우) (아래)

5.6.3 또는 5.5.14의 재설정:

SET GLOBAL innodb_file_format=Barracuda;
SET GLOBAL innodb_file_per_table=1;
SET GLOBAL innodb_large_prefix=1;
logout & login (to get the global values);
ALTER TABLE tbl ROW_FORMAT=DYNAMIC;  (or COMPRESSED)

(버전 번호는 Oracle의 MySQL을 기반으로 합니다.MariaDB 버전 번호는 이 문제에 대해 다릅니다.)

승인된 답변에 대한 후속 조치 - 가장 쉬운 솔루션을 찾은 UTF8로 변경하려면 테이블을 작성할 때 MariaDb에서 다음 행을 사용하십시오.

name varchar(255) CHARACTER SET 'utf8' UNIQUE NOT NULL,

언급URL : https://stackoverflow.com/questions/43483129/does-mariadb-allow-255-character-unique-indexes