设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 674|回复: 1

宝塔导出网站mysql5.7的sql数据库备份文件无法还原迁移到其它机器,错误码1071 - Specified key was too long; max key length is 767 bytes,utf8mb4的坑

[复制链接]
 成长值: 249

签到天数: 4708 天

[LV.Master]伴坛终老

发表于 2024/5/11 19:55 | 显示全部楼层 |阅读模式 |Google Chrome 124.0.0.0|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
宝塔导出网站mysql5.7的sql数据库备份文件无法还原迁移到其它机器,错误码1071 - Specified key was too long; max key length is 767 bytes,utf8mb4的坑

错误
SQL 查询:
CREATETABLE`wp_aioseo_crawl_cleanup_blocked_args`(
`id`BIGINT(20)UNSIGNEDNOTNULLAUTO_INCREMENT,
`key`TEXTCOLLATEutf8mb4_unicode_520_ci,
`value`TEXTCOLLATEutf8mb4_unicode_520_ci,
`key_value_hash`VARCHAR(40)COLLATEutf8mb4_unicode_520_ciDEFAULTNULL,
`regex`VARCHAR(255)COLLATEutf8mb4_unicode_520_ciDEFAULTNULL,
`hits`INT(20)NOTNULLDEFAULT'0',
`created`DATETIMENOTNULL,
`updated`DATETIMENOTNULL,
PRIMARYKEY(`id`),
UNIQUEKEY`ndx_aioseo_crawl_cleanup_blocked_args_key_value_hash`(`key_value_hash`),
UNIQUEKEY`ndx_aioseo_crawl_cleanup_blocked_args_regex`(`regex`))ENGINE=INNODBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_520_ci;

MySQL 返回:

#1071 - Specified key was too long; max key length is 767 bytes


原因:MySQL 索引只支持767个字节,但是VARCHAR却错误的赋予了数值255,由于每个utf8mb4需要占用4字节,所以最大值应当为191

解决办法1,推荐
通过记事本打开sql编辑或者使用sqlitestudio进行编辑都可以,数值改成191后恢复正常

解决办法2,此方法比较复杂而且应用场景很少,这里不做过多的介绍
想要支持更长的索引,那么创建表的时候需要使用row_format=DYNAMIC

欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

签到天数: 67 天

[LV.6]常住居民II

发表于 2024/5/14 11:03 | 显示全部楼层 |Google Chrome 119.0.6045.160|Windows 10
这个问题是迁移导入到mysql5.6时出现

解决方法1:修改regex结构的VARCHAR(255)为VARCHAR(191)

解决方法2:升级mysql为5.7
[发帖际遇]: 一个袋子砸在了 chungbin 头上,chungbin 赚了 2 樱币. 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2024/11/24 03:06 , Processed in 0.165290 second(s), 22 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表