MariaDB 是否允许 255 个字符的唯一索引?

Does MariaDB allow 255 character unique indexes?

我从 10.0.29-MariaDB-0ubuntu0.16.04.1 中反复收到此错误 Ubuntu 16.04

ERROR 1071 (42000) at line 81: Specified key was too long; max key length is 767 bytes

目标行通常如下所示:

name VARCHAR(255) NOT NULL UNIQUE,

将其更改为 VARCHAR(63) 会使错误消失。这是 MariaDB 中的错误吗?

要解决此错误,请执行以下操作之一

解决方法:执行以下操作之一

  • 升级到 5.7.7(或更高版本)以获得 3072 字节限制而不是 767
  • VARCHAR 上将 255 更改为 191(假设您的值不太长)
  • ALTER .. CONVERT TO utf8 -- 但是这不允许表情符号和一些中文
  • 使用 "prefix" 索引(不明智)
  • 重新配置(适用于 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,我发现这是最简单的解决方案,您可以在创建 table 时在 MariaDb 中使用以下行:

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