由于MYISAM每次都会锁住整张表,所以我在考虑将我的MYISAM表转换成InnoDB。但是,INNODB 要求唯一键和主键在 767 字节以内。
所以,我收到了这个错误:-
#1071 - Specified key was too long; max key length is 767 bytes
我的唯一 key 有点长。那么,将我的表转换为 INNODB 的最佳方法是什么?
这是描述我的表的屏幕截图
谢谢
最佳答案
假设在屏幕截图中看到的键就是您所拥有的,这里有问题的键是 query_id
。作为一个 300 个字符的 UTF8 列,它最终只使用了 900 个字节。
您需要将索引限制在该列的一部分——比如说,可能是前 100 个字符?
DROP INDEX query_id ON tablename
CREATE INDEX query_id ON tablename (query_id, position, prod(100))
关于mysql - 如果唯一键很长,将 MYISAM 表转换为 INNODB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15899479/