您的位置:首页 > 数据库 > MySQL

MySQL-001-specified key was too long ; max key length is 767 bytes

2016-09-21 16:56 567 查看
我们先分析下这是个什么问题:指定的键太长了,键的最大长度是767字节。这是我在往MySQL里跑数据库脚本的时候遇到的!



这是我从服务器上down下来的,服务器就是用的MySQL,为什么本地不行呢?所以脚本是没有问题的,有问题的是本地数据库。先说下我的解决方法,我中间试过的没有效果的我也要在后面吐槽下。

解决方法:重新安装5.x版本的MySQL,重新运行脚本,顺利跑完,心情舒畅。

原因:5.x版本中明确了支持varchar的最大长度为255,但是6.0版本中并没有说明,所以重新安装5.0版本的就可以了。

正文说完了,就来吐槽下网上的各种不靠谱以及靠谱但不过用的解决建议。

1):将varchar的长度设小点。在自己玩的时候这个削足适履的方法是可以用的,但是我的表是从服务器上down下来的,高达192MB,默默寻找下个方法。

2):修改字符集。在建立数据库的时候要将数据库的字符集格式设置成和sql脚本一致的格式。我使用的字符集是UTF-8的字符集,整个项目的设定也是使用UTF-8的字符集,所以不会是字符集的问题。如果修改可能会使得项目在运行时出现乱码。即便是修改了,也没有解决这个问题。

3):确认存储引擎,在myslq中输入:show engines;回车,就会显示出mysql的存储引擎列表和当前的默认引擎。确认当前存储引擎是不是InnoDB,如果不是就设置为当前引擎。(注:当我展示当前引擎时,显示的是InnoDB引擎,所以不是这个问题。有时间可以试下,在5.0版本中换成其他引擎是否会报这个错误)

注明:环境–》win10 64位
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐