问题描述:
今天在执行SQL 命令时,报了上面的错误,
Specified key was too long; max key length is 767 bytes
是因为索引过长导致的,最长索引不要超过767 字节。
解决思路:
一,先检查一下是不是数据库被限制了索引的大小,查询innodb_large_prefix这个字段,这个字段限制了索引前缀的大小。关闭此限制后,索引前缀的大小将可以达到3072字节。
SHOW variables like 'innodb_large_prefix';
如果查询的值是OFF的话 执行下面命令
SET GLOBAL INNODB_LARGE_PREFIX = ON;
另外,innodb_large_prefix这个属性在5.6上是默认关闭的,而在5.7上是默认开启的。我执行的sql 就是从MySQL5.7上导出的,但是在5.5 就运行报错了。
二,执行完上面的sql后,再次执行sql 语句,报错
Index column size too large. The maximum column size is 767 bytes.
还是索引太长了。可以执行sql