gpt4 book ai didi

java - Java MySql 连接器版本之间的默认 CHARACTER_SET 和 COLLATION_CONNECTION 发生了变化吗?

转载 作者:行者123 更新时间:2023-11-29 15:18:03 25 4
gpt4 key购买 nike

我们使用的是 MySql 版本 5.7,所有表\数据库都使用 utf8_unicode_ci。在尝试将 Java 连接器从 5.1.38 升级到最新版本 (8.0.17) 时,我们遇到了以下异常:

java.sql.SQLException: Illegal mix of collations (utf8_bin,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '='

比较两个连接器之间的 session 变量,我们注意到 CHARACHTER_SETCOLLATION_CONNECTION 在从 utf8_binutf8mb4_general_ci< 的版本之间都发生了变化.

我知道我们可以添加到连接字符串connectionCollat​​ion=utf8_bin但这不是 super 安全,有没有办法强制MySql服务器根据数据库的默认排序规则设置默认排序规则\字符集?

最佳答案

您应该阅读https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html它解释了有关客户端和服务器字符集的所有内容。

据我所知,客户端或连接字符集无法隐式使用数据库字符集。最接近的是以下内容,它仍然需要客户端运行一条语句:

SET CHARACTER SET utf8mb4;

这会隐式地将 character_set_connectioncollat​​ion_connection 设置为当前默认数据库的值。

我不知道你为什么说将排序规则添加到连接字符串不安全。这不就是这个目的吗?

关于java - Java MySql 连接器版本之间的默认 CHARACTER_SET 和 COLLATION_CONNECTION 发生了变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59546380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com