首页 > 解决方案 > 如何在spring boot中设置mysql系统变量?

问题描述

我正在为以下情况而苦苦挣扎

Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

产生上述错误的查询如下

where key = concat(cast(a.id as char), '-', cast(b.id as char))

key列的字符集和排序规则是utf8mb4 + utf8mb4_unicode_ci.
而我们的mysql服务器character_set_connectioncollation_connection也和上面一样。

mysql> show global variables like '%c%'
-----------------------------------------------
character_set_connection | utf8mb4
-----------------------------------------------
collation_connection     | utf8mb4_unicode_ci
-----------------------------------------------

根据此设置,不应发生上述异常。
但是在spring boot中,cast操作符的结果似乎被转换了utf8mb4_general_ci

我在spring boot启动时没有设置系统变量。
我做错了什么?
我的 jdbc 网址如下

jdbc:mysql://{host}:3306/{database}?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Seoul

标签: mysqlspringspring-boot

解决方案


推荐阅读