Mysql报错解决:Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE)

原因:
查询后发现是因为临时表的字符集是 CHARSET=utf8mb4 COLLATE= utf8mb4_unicode_ci而此字符集是继承于数据库的, 查看发现库的字符集是 让实施同事查看后发现创建数据库时做了如下设置:collation_server= utf8mb4_unicode_ci 从而后续创建临时表和函数时(未显式制定utf8mb4_0900_ai_ci), 字符集都是utf8mb4_unicode_ci,而我们的建表语句中是制定了字符集为 utf8mb4_0900_ai_ci, 于是就出现了开头的错误。

解决办法:

  1. alter database gts_sjck CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  2. 将mysql的配置文件(/etc/my.cnf)中下边的注释掉 collation_server= utf8mb4_unicode_ci
  3. 重启数据库
  4. 重启etl服务

教训:
若是自建的mysql, 创建完库后续检查字符集,应为utf8mb4_0900_ai_cishow variables where Variable_name like ‘%collation%’;


版权声明:本文为weixin_43186465原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。