Unknown collation: ‘utf8mb4_0900_ai_ci说明高版本mysql导入到低版本mysql导入缺失文件错误:Finished with error。

今天在导入公司数据库sql到我们本地数据库的时候遇到了这个问题。找了半天最后还是解决了,现在给大家分享一下。

目录

第一种是:在我们导入数据的时候 把 "在每个运行中运行多个查询" 给去掉  这样操作会慢一些 但是数据不会冲突 不会让数据进行减少。

然后就又找到了第二种方法。


问题是这样的:

 在网上查了一些方法:比较有用的有两种。

第一种是:在我们导入数据的时候 把 "在每个运行中运行多个查询" 给去掉  这样操作会慢一些 但是数据不会冲突 不会让数据进行减少。

后面这样试过之后发现会好一点。但是还是有一些数据缺失。

然后就又找到了第二种方法。

说第二种方法之前得明白这个问题具体的错误原因:

MySQL 8.0 版本加入了 utf8mb4_0900_ai_ci 的排序规则,低版本没有该排序规则因此出现了 1273 的报错。

解决:

        1.将原来的数据导出为 .sql 文件导出的 sql 文件使用记事本或其他可编辑工具打开,然后按住Ctrl + H 以win10为例点替换按钮将 utf8mb4_0900_ai_ci 替换成5.7(5.6)版本可识别的 utf8mb4_general_ci 排序规则。

 

 用过第二种方法之后再次导入sql,大体已经没有问题了,但是还是有一些小的数据缺失。

 之后我又把第一种方法和第二种方法结合使用。缺失的文件就基本没有了。

 最后虽然还是有一点点数据缺失,但是大体已经不影响了。

补充: 你可以启动项目 ,如果项目还是sql语法错误之类的那就说明还有数据缺失。然后你找到

缺失的那张表,把里面的varchar(255)修改为varchar(64),然后运行那张表sql。建立那张表。就成功解决了。

 

这个问题是因为071 - Specified key was too long; max key length is 767 bytes

意思就是“索引字段长度太长,超过了767bytes”。

查了一下 mysql的5.6或者5.7中varchar主键只支持不超过767个字节或者768/2=384个双字节 或者767/3=255个三字节的字段 而GBK是双字节的,UTF8是三字节的。

循环以往,剩下的表也这样处理,就没有问题。注:以上办法亲测有效!!!

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值