You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP项目迁移遇MySQL 1071错误,如何修改my.ini解决?

解决MySQL 1071索引长度超限问题(无需修改迁移脚本)

绝对可以!不用动你的迁移脚本,调整MySQL的my.ini配置就能搞定这个1071 Specified key was too long错误,我给你详细拆解方案:

为什么会出这个错?

你已经找对了根源:varchar(512)搭配utf8字符集时,每个字符占3字节,光username就占了512*3=1536字节,再加上user_id的8字节,联合主键的总长度远超InnoDB默认的767字节索引上限,所以触发了报错。

要改哪些配置?

打开你的my.ini(Windows系统)或my.cnf(Linux系统),找到[mysqld]段落,添加以下配置:

[mysqld]
# 允许InnoDB使用最长3072字节的索引前缀
innodb_large_prefix = 1
# 开启独立表空间(这是innodb_large_prefix生效的前提)
innodb_file_per_table = 1
# 启用支持大索引的Barracuda文件格式
innodb_file_format = Barracuda

接下来怎么做?

  1. 保存配置文件后,必须重启MySQL服务,否则新配置不会生效。
  2. 重新运行你的PHP迁移脚本,这次建表语句应该能顺利执行了。

额外提醒

  • 如果你用的是MySQL 5.7.7及以后的版本,innodb_large_prefix默认已经是开启状态,你只需要确认innodb_file_per_table(一般默认也是ON)和innodb_file_format的配置就行。
  • 如果之前已经尝试建表失败,记得先把残留的空表删掉再重新跑迁移,避免重复报错。

内容的提问来源于stack exchange,提问作者user8836137

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:59:40