美文网首页
【数据库】不同版本的navicat之间数据传输,报错:COLLA

【数据库】不同版本的navicat之间数据传输,报错:COLLA

作者: 打瞌睡的灰 | 来源:发表于2020-05-29 10:58 被阅读0次

    我使用的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之间数据传输,报错:COLLA

          本文链接:https://www.haomeiwen.com/subject/iokaahtx.html