无法改变字符集客户端&使用JDBC for mysql 5.6从{utf8mb4到utf8的字符集连接

时间:2016-11-27 07:18:53

标签: mysql jdbc

我有这个连接字符串&它与Windows上的mysql Connector / J 5.1.40和mysql 5.5一起正常工作:

jdbc:mysql://localhost:3306/db?noAccessToProcedureBodies=true&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&connectionCollation=UTF8_PERSIAN_CI

但是当我升级到mysql 5.6时,似乎JDBC驱动程序根据mysql change history自动将连接编码从utf8更改为utf8mb4:

  

Connector / J现在自动检测使用character_set_server = utf8mb4配置的服务器,或者在SET NAMES =在建立连接时进行的调用中使用characterEncoding = ...作为utf8mb4处理传递的Java编码utf-8。 (Bug#54175)

我不知道为什么它应该将utf8视为utf8mb4,但我甚至无法在建立连接后手动更改它:

Statement stmt = (Statement) conn.createStatement();
stmt.executeQuery("SET NAMES UTF8 COLLATE UTF8_PERSIAN_CI");
stmt.close();

对连接状态参数没有影响&我仍然关注以下情况:

character-set-client=utf8mb4
character_set_connection=utf8mb4
character_set_database=utf8
character_set_filesystem=binary
character_set_results=utf8
character_set_server=utf8
character_set_system=utf8

这是mysql配置文件的一部分:

[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

[mysqld]
character-set-server=utf8
collation-server = utf8_persian_ci

我真的需要将连接编码更改为utf8而不是utf8mb4,因为它在我的应用程序中出现了一些问题。

任何解决方法都会受到赞赏。

0 个答案:

没有答案