Illegal mix of collations (latin1_swedish_ci,IMPLICIT), (utf8mb4_general_ci,COERCIBLE), (utf8mb4_general_ci,COERCIBLE) for operation 'replace'
场景:由一个库往另外一个库进行数据的复制时,复制完成后的数据写入修改有问题,查询没问题,具体的报错信息是如上,当然java代码里抛出的错误也是和这个一样的:
首先百度一搜索,就是字符集的问题,执行了sql查看对比了一下,字符集设置是没有问题的;
当执行sql的时候报这个错误,经过一系列的排查后最终排查到了原来是这个表用到了触发器,但是呢,触发器的字符格式不一致问题;
给触发器指定编码后的执行结果:
总结:
1、先排查数据库的编码是否正常
2、再看是否用到了自定义函数或者是触发器,在看下他们的编码是否正常,最好给他们设置编码,防止编码不一致的问题;
show charset like 'gb%'; //查看gb语言
show charset like 'utf%'; //查看utf语言
show variables; //“variables” 系统变量
show variables like 'char%'; //“variables” 系统变量,查看char变量
show variables like 'coll%';