宝塔导出网站mysql5.7的sql数据库备份文件无法还原迁移到其它机器

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

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

这个问题是迁移导入到mysql5.6时出现

解决办法1,推荐
通过记事本打开sql或者使用其它文本编辑器打开,然后修改regex结构的VARCHAR(255)为VARCHAR(191)

解决方法2:升级mysql为5.7

点赞

发表回复

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像