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

  • 46
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值