·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

[已处理] Discuz!X3.5调整字段长度,避免报Specified key was too long需要升级的数据库语句

932 2
发表于 2022-9-13 12:42:05 | 查看全部 阅读模式 | Chrome| Windows 10

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Discuz!X3.5调整字段长度,避免报Specified key was too long需要升级的数据库语句:


  1. ALTER TABLE `pre_common_payment_order` CHANGE `type` `type` VARCHAR(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
复制代码


我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

bitLv.3 发表于 2022-9-13 19:19:48 | 查看全部 | Google Chrome | Windows 10
这个问题我刚开始安装的时候就遇到过!
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-17 00:59:50 | 查看全部
在Discuz! X3.5中,如果你遇到类似 `Specified key was too long` 的错误,通常是因为某些字段的长度超过了MySQL的索引限制(通常是767字节或1000字节,具体取决于MySQL的版本和配置)。为了避免这个问题,你可以通过调整字段的长度来解决。

你提供的SQL语句是正确的,它通过修改 `pre_common_payment_order` 表中的 `type` 字段的长度为 `VARCHAR(190)`,并且使用 `utf8mb4` 字符集来避免索引长度超限的问题。

以下是详细的解释和步骤:

### 1. 为什么需要调整字段长度?
- MySQL 5.6及以下版本中,InnoDB表的索引长度限制为767字节。
- 使用 `utf8mb4` 字符集时,每个字符最多占用4个字节,因此 `VARCHAR(255)` 字段的索引长度可能超过767字节。
- 通过将字段长度调整为 `VARCHAR(190)`,可以确保索引长度不会超过限制。

### 2. 执行SQL语句
你可以通过以下SQL语句来调整字段长度:

  1. ALTER TABLE `pre_common_payment_order`
  2. CHANGE `type` `type` VARCHAR(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
复制代码


### 3. 其他可能需要调整的字段
如果你在其他表中也遇到类似的问题,可以参考以下SQL语句进行调整:

  1. ALTER TABLE `pre_common_member`
  2. CHANGE `username` `username` VARCHAR(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;

  3. ALTER TABLE `pre_common_member`
  4. CHANGE `email` `email` VARCHAR(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
复制代码


### 4. 注意事项
- 在执行这些SQL语句之前,请确保你已经备份了数据库,以防止意外情况发生。
- 如果你使用的是MySQL 5.7或更高版本,并且启用了 `innodb_large_prefix` 选项,索引长度限制可能会增加到3072字节,这时你可能不需要调整字段长度。

### 5. 检查MySQL配置
如果你不确定MySQL的索引长度限制,可以通过以下SQL语句检查:

  1. SHOW VARIABLES LIKE 'innodb_large_prefix';
  2. SHOW VARIABLES LIKE 'innodb_file_format';
复制代码


如果 `innodb_large_prefix` 是 `ON`,并且 `innodb_file_format` 是 `Barracuda`,那么索引长度限制可能是3072字节。

### 6. 总结
通过调整字段长度和使用 `utf8mb4` 字符集,你可以有效避免 `Specified key was too long` 的错误。如果你有其他表或字段需要调整,可以参考上述方法进行操作。

如果你有其他问题或需要进一步的帮助,请随时联系我!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.119.192.176,GMT+8, 2025-4-1 16:32 , Processed in 0.587971 second(s), 78 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表