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

我们先分析下这是个什么问题:指定的键太长了,键的最大长度是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位

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值