向服务器中导入本地 MySQL 数据库,遇到错误:1071 -Specified key was too long; max key length is 767 bytes。

这个错误的原因是索引长度超过了 MySQL 默认的 767 个字节,关于这个问题的原因在:MySQL创建索引报错:”Specified key was too long; max key length is 767 bytes”的原因及解决办法一文中详细介绍了。

如果是创建索引时遇到该问题,那么按照上文中介绍的方法修改字段长度就可以了。

导入的话有两种办法:

方法一:修改 sql 文件,批量将导入语句中的 255 替换成 191 再次导入即可。

`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

改成:

`email` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

方法二:遇到这个错误都是 InnoDB 模式(因为 myisam 模式长度限制是 1000 字节),那么可以启用 innodb_large_prefix 选项来突破 767 字节限制。

mysql> set global innodb_large_prefix=1;