Description
In mysql-connector-java-5.1.27, the charset utf8mb4 is supported. But the steps and result bellow looks buggy.
1、 set character_set_server=gbk in my.cnf
2、 start mysql
3、 execute set global character_set_server=utfmb4;
4、 insert a data with utf8mb4 characters
Result: error data inserted.
Analysis
Direct reason: Java connector believes that the server use gbk as the default set, so deal the data with the rule of gbk;
Deeper reason:
1\ set global character_set_server=utfmb4 just change the global_system_variables, but not the default_charset_info and default_character_set_name.
2\ when handshake, MySQL server writes server characteristics to client, using default_charset_info->number, 28, which is the CharsetIndex of gbk.
Compare
As comparison, the steps change to
1、 set character_set_server= utfmb4 in my.cnf
2、 insert a data with utf8mb4 characters
Result: correct data inserted.
Because the default charset is utfmb4 now, the connector treats dada correctly.
Discussion
There are two ways to resolve this problem.
1\ MySQL sends the current character info number in global_system_variables when handshake
2\ Java connector get the correct character to use by “select @@character_set_server;”
So , is it a bug for MySQL or java-connector?
相关推荐
MySQL是世界上最受欢迎的开源数据库系统之一,而MySQL Connector/J是MySQL官方提供的用于Java应用程序与MySQL数据库之间连接的驱动程序。本文将深入探讨这两个文件:"mysql-connector-java-5.1.40.zip" 和 "mysql-...
MySQL Connector/J 8.0.26 是MySQL数据库与Java应用程序之间的重要桥梁,它是一个实现了JDBC(Java Database Connectivity)规范的驱动程序,允许Java开发者在应用中无缝地连接到MySQL数据库进行数据操作。...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,而MySQL Connector/J则是MySQL官方提供的用于Java应用程序与MySQL数据库进行连接的驱动程序。这个"mysql-connector-java-8.0.23.zip"文件正是MySQL Connector/J的...
支持mysql-connector-java-5.6,mysql-connector-java-5.0.X以上
MySQL是世界上最受欢迎的关系型数据库管理系统之一,而MySQL Connector/J则是MySQL与Java应用程序之间的桥梁,它是一个JDBC(Java Database Connectivity)驱动程序,使得Java开发者能够方便地在Java应用中访问和...
MySQL Connector/J是MySQL数据库与Java应用程序之间的桥梁,它是一个用于JDBC(Java Database Connectivity)的驱动程序,使得Java开发者能够连接到MySQL服务器并执行SQL查询和操作。在本例中,我们有两个不同版本的...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,而`mysql-connector-java-5.1.34.jar`是MySQL为Java应用程序提供的数据库连接驱动程序,用于在Java应用和MySQL数据库之间建立通信桥梁。这个JAR(Java Archive)...
MySQL Connector/J 5.1.49 是一个用于Java应用程序的数据库驱动程序,它使得Java开发者能够连接到MySQL数据库服务器并执行SQL操作。这个jar文件是MySQL官方提供的,确保了与MySQL服务器的兼容性和稳定性。在Java环境...
MySQL数据库驱动`mysql-connector-java-5.1.41-bin.jar`是连接Java应用程序到MySQL服务器的关键组件。它是MySQL官方提供的JDBC(Java Database Connectivity)驱动程序,允许Java开发者在Java环境中执行SQL语句,...
Java MySQL Jar包`mysql-connector-java-5.0.8-bin.zip`是Java开发者用于连接MySQL数据库的关键组件。这个压缩包包含两个文件:`mysql-connector-java-5.0.8-bin.txt`和`mysql-connector-java-5.0.8-bin.jar`。在...
MySQL Connector/J是MySQL数据库系统与Java应用程序之间的桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够轻松地在他们的应用程序中连接到MySQL数据库。标题中的"mysql-...
MySQL Connector/J是MySQL数据库系统与Java应用程序之间的桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够轻松地在Java应用程序中连接并操作MySQL数据库。"mysql-...
MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,其与Java的连接主要依赖于MySQL Connector/J,也就是我们所说的JDBC驱动程序。"mysql-connector-java-8.0.23.rar"是一个包含MySQL Java连接器的压缩包,适用...
MySQL Connector/J是MySQL数据库与Java应用程序之间通信的重要桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在MySQL数据库上执行SQL操作。标题中的"mysql-...
MySQL Connector/J是MySQL数据库系统与Java应用程序之间的桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在Java应用程序中访问MySQL数据库。`mysql-connector-...
MySQL Connector/J是MySQL数据库系统与Java应用程序之间的重要桥梁,它是一个实现了JDBC(Java Database Connectivity)规范的驱动程序,使得Java开发者能够方便地在Java应用中访问MySQL数据库。本压缩包"mysql-...
MySQL Connector/J是MySQL数据库系统与Java应用程序之间的桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在Java应用程序中访问MySQL数据库。在这个压缩包"mysql-...
MySQL Connector/J 8.0.27 是 MySQL 官方提供的用于 Java 应用程序的数据库驱动程序,它实现了 JDBC(Java Database Connectivity)规范,使得 Java 开发人员能够方便地在 Java 应用中与 MySQL 数据库进行交互。...
MySQL的JDBC驱动,即`mysql-connector-java`,是Java开发者用来与MySQL数据库进行交互的重要组件。在Java编程环境中,当需要通过编程方式访问MySQL数据库时,`mysql-connector-java`扮演着桥梁的角色,实现了Java...