mysql导入报错 [Err] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'

数据库 0 495
邮箱用户_6d1t0
邮箱用户_6d1t0 2021年7月18日 11:13 发表
摘要:mysql导入报错: [Err] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'

问题出现在:

从本机mysql导出备份到服务器上

mysql导入报错:

[Err] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'


搞死了,一整个下午 baidu上并没有什么解决方式,自己综合n+1片文章摸出来

查了100遍数据库字符集,对比两边数据库是一摸一样的(起初不一样也通过navicat,workbench改成一致的了,通过以下命令可以查出字符集即改字符集:

showvariableslike'character%';

setcharacter_set_database=utf8;

setcharacter_set_server=utf8;


然而还是不停的报那个错,我始终找不到utf8mb4_0900_ai_ci这个东东在哪里。

后来发现,每一张表都有自己的排序规则和字符集(export table 后面也会带上这个):


通过此语句能直接查到哪些表用哪些字符集:

select TABLE_SCHEMA,TABLE_NAME,TABLE_COLLATION from information_schema.tables where 【table_collation = 'utf8mb4_0900_ai_ci'】

and table_schema = 'db.schema';

通过此语句终于发现确实存在诡异的utf8mb4_0900_ai_ci排序的表

应该是因为本机mysql版本是8,服务器上版本较低导致的不兼容

selectTABLE_SCHEMA,TABLE_NAME,TABLE_COLLATIONfrominformation_schema.tableswheretable_collation ='utf8mb4_0900_ai_ci'

andtable_schema ='schema';


解决方式:

1 先查错误的字符集存在哪些表里:

select TABLE_SCHEMA,TABLE_NAME,TABLE_COLLATION from information_schema.tables where table_collation = 'utf8mb4_0900_ai_ci'

and table_schema = 'jh';

2 发现无法修改,使用mysql命令行+root权限还是失败 update information_schema.tables

set table_collation = 'utf8_general_ci' where table_collation = 'utf8mb4_0900_ai_ci' and table_schema = 'jh';

3 傻傻的导出.sql文件,然后批量把

字符:utf8mb4_0900_ai_ci 替换为:utf8_general_ci 



作者:麦芽maiya
链接:https://www.jianshu.com/p/7456a61d9873
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
点赞 0 收藏(0)    分享
相关标签: mysql
问题没解决?让chatGPT帮你作答 智能助手
0 个评论
  • 消灭零评论