mysql - 如何在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_connection
,collation_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
解决方案
推荐阅读
- javascript - 从数组中获取具有唯一 ID 的第一个对象并将它们放入新列表中
- mysql - 如何在 hostgator 上上传 nodejs 项目/网站。可能吗?
- multithreading - 如何在 groovy 中使用多线程访问 1000 个端点?
- google-cloud-platform - 扳手 - 如何查找表大小
- google-chrome-extension - 如何从后台脚本更改 BadgeText
- react-native - 如何检测视图是否在反应原生的视口或窗口中可见?
- c# - 保护 API 免受 SQL 注入
- python - 当我将我的 numpy 数组转换为 Dataframe 时,它会将值更新为 Nan
- ios - 如何在 swift 中使用自定义视图?
- python - 填补火花中日期缺失值的优雅方法