宝塔导出网站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