【数据库】不同版本的navicat之间数据传输,报错:COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4'

我使用的navicat版本比较新,而要传输数据的目标数据库,版本比较老,这导致两个版本之间的字符集不同。


本地navicat版本


目标navicat版本

同样都是utf8mb4的字符集,查看新版本中建立的数据库,utf8mb4中支持有utf8mb4_cs_0900_ai_ci等规则。但是这些规则在老版本navicat中建立的数据库内是不支持的。

新版本utf8mb4的部分字符集


老版本utf8mb4的部分字符集

因此,如果新版本使用了老版本不支持的字符集,直接进行数据传输,就会出现“COLLATION 'utf8mb4_cs_0900_ai_ci' is not valid for CHARACTER SET 'utf8mb4'” 的报错


解决方式

1、在新版本的navicat上建立的数据库内,选择数据传输,导出完整插入语句的sql文件到本地

2、手动修改导出的sql文件,替换所有的'utf8mb4_cs_0900_ai_ci' 为‘utf8mb4_bin’

3、选择目标数据库→运行mysql文件,执行修改过的sql文件,即可进行数据的插入。

到此,即可完成新版本到旧版本的数据库的迁移,但是这个方法只适用于表格较少的应急的情况

你可能感兴趣的:(【数据库】不同版本的navicat之间数据传输,报错:COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4')