原因:
查询后发现是因为临时表的字符集是 CHARSET=utf8mb4 COLLATE= utf8mb4_unicode_ci而此字符集是继承于数据库的, 查看发现库的字符集是 让实施同事查看后发现创建数据库时做了如下设置:collation_server= utf8mb4_unicode_ci 从而后续创建临时表和函数时(未显式制定utf8mb4_0900_ai_ci), 字符集都是utf8mb4_unicode_ci,而我们的建表语句中是制定了字符集为 utf8mb4_0900_ai_ci, 于是就出现了开头的错误。
解决办法:
- alter database gts_sjck CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
- 将mysql的配置文件(/etc/my.cnf)中下边的注释掉 collation_server= utf8mb4_unicode_ci
- 重启数据库
- 重启etl服务
教训:
若是自建的mysql, 创建完库后续检查字符集,应为utf8mb4_0900_ai_cishow variables where Variable_name like ‘%collation%’;
版权声明:本文为weixin_43186465原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。