问题出现在:
从本机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
网友评论