去评论
dz插件网

Discuz!X3.5 MySQL InnoDB引擎max key length is 767bytes长度问题

admin
2021/01/22 13:35:29

允许索引字段前缀的字节限制为 767 bytes,且:

所以对于(一)中的问题:

字符集为 utf8mb4, 所以可申请索引的 varchar 长度为:767/4 ≈ 191;

而字符集为 utf8 时,可设置的创建索引 varchar 长度为: 767/3 ≈ 255

在 5.6.3 之后的版本,字节限制提高到了 3072 bytes.


从(二)可得:

字符集为 utf8mb4 时,限制 varchar 字符为:3072/4 = 768;

字符集为 utf8 时,限制 varchar 字符为:3072/3 = 1024;

因此字符集为 utf8mb4 时,将 name 字段索引前缀长度控制在 768 以内即可成功创建索引。