【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】v7.1.1
【复现路径】使用Mybatis,使用 where in (#{txIds}), jdbc 连接串的charset encoding 是UTF-8, 表定义是默认的utf8mb4
, collation 也是默认的 utf8mb4_bin
【遇到的问题:一个查询语句报错:
### Cause: java.sql.SQLException: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '='
触发这个问题的直接原因是错误地使用了Mybatis list 动态参数的用法。但是这里有几个疑惑:
- 为什么我用的明明是in,但是报错信息是operation ‘=’
- 我的表表定义是默认的utf8mb4, collation 也是默认的 utf8mb4_bin, 但是报错信息是
utf8_general_ci
和utf8mb4_general_ci
【附件:截图/日志/监控】