当前位置:   article > 正文

mysql导入sql文件时出错Unknown collation: 'utf8mb4_0900_ai_ci'_collation 'utf8mb4_0900_ai_ci' is not valid for ch

collation 'utf8mb4_0900_ai_ci' is not valid for character set 'utf8mb3

mysql 5.5 版本后新增了字符集utf8mb4, 即最大长度变为4个字节。原来的utf8最大只能存放3个字节的字符。因此在导入的时候出错。

查询得知:
MySQL 8.0 默认的是 utf8mb4_0900_ai_ci。

  • utf8mb4表示最大存储长度为4个字节
  • 0900表示用于比较两个unicode字符的算法版本
  • ai (accent insensitivity)表示口音不敏感。即e, è, é, ê 和 ë 在排序时没有区别
  • ci (case insensitivity)表示大小写不敏感。

解决方法有两个:

1.修改sql文件里数据表指定的字符集,将sql文件中的’utf8mb4_0900_ai_ci’替换为‘utf8_unicode_ci’

sed -i 's/\<utf8mb4_0900_ai_ci\>/utf8_unicode_ci/g' filename
sed -i 's/\<utf8mb4_0900_ai_ci\>/utf8/g' filename
  • 1
  • 2

2.修改数据库的字符集。需要数据库版本大于5.5。

可以先查看数据库的字符集

show variables like 'character%';
  • 1

接下来修改mysql的配置文件/etc/mysql/my.cnf。但是尝试过不能修改为utf8mb4_0900_ai_ci,需要修改为utf8mb4_unicode_ci。sql文件中的也要修改。

[client]
default-character-set=utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake = true

[mysql]
default-character-set = utf8mb4```
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

修改后即可成功导入。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/98403
推荐阅读
相关标签
  

闽ICP备14008679号