mysql导入时提示:Specified key was too long; max key length is 767 bytes

问题:

用navicat导入mysql数据库时,提示Specified key was too long; max key length is 767 bytes,意思即:索引字段长度太长,超过了767bytes。

原因:

mysql的varchar主键只支持不超过767个字节或者768/2=384个双字节,或者767/3=255个三字节的字段,而GBK是双字节的,UTF8是三字节的。

解决:

找到索引字段,字段索引是varchar(1000)的,先把索引干掉,再次导入成功!


根据需要或者可以做如下配置:

  1. 使用innodb引擎;
  2. 启用innodb_large_prefix选项,将约束项扩展至3072byte;
  3. 重新创建数据库;

my.cnf配置: