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

WampServer导入MySQL遇#1071键过长错误,求配置调整方法

解决MySQL #1071 索引长度超出限制的问题

问题原因

你遇到的#1071错误核心原因是MyISAM引擎对联合索引的总长度限制为1000字节,而你的表使用了utf8mb4字符集(每个字符占4字节):

  • subscription_id是bigint(20) UNSIGNED,占8字节
  • stripe_plan是varchar(255),按utf8mb4计算为255*4=1020字节
    两者总和8+1020=1028字节,超过了1000字节的上限。旧版Wamp可能默认使用utf8字符集(每个字符3字节),255*3+8=773字节未触发限制,所以能正常运行。

解决办法

1. 切换到InnoDB引擎(推荐方案)

InnoDB是MySQL当前的默认引擎,对索引长度的限制更宽松(开启innodb_large_prefix后支持单索引最大3072字节),同时支持事务、行锁等更优特性。修改CREATE TABLE语句的引擎部分即可:

DROP TABLE IF EXISTS `subscription_items`;
CREATE TABLE IF NOT EXISTS `subscription_items` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `subscription_id` bigint(20) UNSIGNED NOT NULL,
  `stripe_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `stripe_plan` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `quantity` int(11) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `subscription_items_subscription_id_stripe_plan_unique` (`subscription_id`,`stripe_plan`) USING HASH,
  KEY `subscription_items_stripe_id_index` (`stripe_id`(250))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

2. 缩短联合索引中stripe_plan的长度

如果必须保留MyISAM引擎,可调整stripe_plan的索引长度,让总字节数控制在1000以内:
计算可得:(1000-8)/4=248,将联合索引里的stripe_plan改为取前248个字符:

UNIQUE KEY `subscription_items_subscription_id_stripe_plan_unique` (`subscription_id`,`stripe_plan`(248)) USING HASH,

3. 改用utf8字符集(仅适用于无需4字节字符场景)

如果你的业务不需要存储emoji或其他4字节Unicode字符,可将字符集改为utf8(每个字符3字节),此时255*3+8=773字节,不会超出MyISAM的索引限制:

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

4. 修改MySQL配置(针对InnoDB大索引支持)

如果切换InnoDB后仍存在索引长度问题,可修改Wamp的my.ini配置文件:
找到[mysqld]段落,添加或修改以下参数:

innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = 1

修改完成后重启WampServer的MySQL服务即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:01:14