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改成一致的了,通过以下命令可以查出字符集即改字符集:

show variables like 'character%';
set character_set_database=utf8;
set character_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,服务器上版本较低导致的不兼容

select TABLE_SCHEMA,TABLE_NAME,TABLE_COLLATION from information_schema.tables where table_collation = 'utf8mb4_0900_ai_ci' 
and table_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 

插播一条tip,mysql8的my.ini在哪里:

C:\ProgramData\MySQL\MySQL Server 8.0
————————————————
版权声明:本文为CSDN博主「westworld2017163com」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/westworld2017163com/article/details/83150628

你可能感兴趣的:(mysql,mysql,数据库)