请知悉:本文最近一次更新为 5年 前,文中内容可能已经过时。

MySQL在导入sql文件的时候,碰到报错输出:

Index column size too large. The maximum column size is 767 bytes

该问题出现的原因是使用utf8mb4字符集造成的。

转载解释如下:

由于 MySQL 的 Innodb 引擎表索引字段长度的限制为 767 字节,因此对于多字节字符集的大字段或者多字段组合,创建索引时会出现此错误。

如果是 utf8mb4 字符集,由于 utf8mb4 是 4 字节字符集,则默认支持的索引字段最大长度是 191 字符(767 字节 / 4 字节每字符≈191 字符),因此在 varchar (255) 或 char (255) 类型字段上创建索引会失败。

如果是 utf8 字符集,由于 utf8 是 3 字节字符集,则默认支持的索引字段最大长度是 255 字符(767 字节 / 3 字节每字符≈255 字符),则 varchar (255) 或 char (255) 不会失败。

解决方案:

修改my.cnf或my.ini,添加innodb_large_prefix = 1到mysqld。

然后重启MySQL服务。

创建表的时候指定表的 row format 格式为 Dynamic 或者 Compressed,示例如下:

    create table idx_length_test_xxxx
(
id int auto_increment primary key,
stringname varchar(255)
)
ROW_FORMAT=DYNAMIC default charset utf8mb4;

对已经创建的表,修改表的 row_format 格式命令如下:

    alter table <表名> row_format=dynamic;
alter table <表名> row_format=compressed;

以上内容转载整理自:
mysql列超长处理


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《MySQL The maximum column size is 767 bytes解决方案》相关的博文:


留言

avatar
😀
😀😁😂😅😭🤭😋😘🤔😰😱🤪💪👍👎🤝🌹👌