Is it a bug in MySQL or in java-connector?

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?

时间: 2024-11-02 12:25:24

Is it a bug in MySQL or in java-connector?的相关文章

第1期实时在线培训:@淘宝丁奇,如何解决影响MySQL使用的9大问题?

大江南北,一路飞雪. 云栖大会: 1月20日的云栖大会上海峰会成功落幕.但在无数的重磅发布中,我们对DT世界的思考才刚刚开始. 1. 王坚:数据创业要学习小岗村 2. 详解阿里云一站式大数据平台"数加"的首批20款产品 3. 视频回放:与九州云.英伟达.润和软件.优客工场的战略合作 4. 视频回放:60+场高浓度技术实战与行业实践演讲 5.<2015-2016中国云栖创新报告>下载 6.<2015首届云栖奖评选>揭晓 详见云栖大会上海峰会回顾专题. 头条系列:

mysql案例:Java程序访问Mysql报错

mysql案例:Java程序访问Mysql报错'OPTION SQL_SELECT_LIMIT=XXX' [环境描述] mysql版本: 5.6.14-56-log Percona Server (GPL) 程序: 使用JDBC驱动mysql-connector-java访问mysql数据库 [报错信息] 程序访问mysql执行SQL语句的时候报错: You have an error in your SQL syntax; check the manual that corresponds t

c++用odbc连接mysql到SQLConnect()返回-1?

问题描述 c++用odbc连接mysql到SQLConnect()返回-1? 4C retcode = SQLConnect(hdbc (SQLCHAR*) ""mysql"" SQL_NTS (SQLCHAR*)""root"" SQL_NTS (SQLCHAR *)""mysql"" SQL_NTS);mysql是安装的最新版本,同时自带安装了ODBC,然后代码连接:https://

mysql-请问:用java代码怎样读取MySQL数据库生成JSP文件?谢谢!

问题描述 请问:用java代码怎样读取MySQL数据库生成JSP文件?谢谢! 用java代码怎样读取MySQL数据库生成JSP文件? 解决方案 你是要写一个数据导出的程序吧,程序里面包含数据导出命令,生成文件格式为jsp啊. 解决方案二: 将文件从数据库(MySQL)中进行读取 解决方案三: 不能从后台去数据库去数据然后写到JSP文件?

mysql-如何用JSTL JDBC MYSQL 实现增删查改?

问题描述 如何用JSTL JDBC MYSQL 实现增删查改? TOMCAT.ECLIPSE.JSP.JSTL.JDBC.MYSQL 我是一个刚入门的小白.先谢谢前辈了. 想用jstl jdbc向MYSQL里插入数据,更新,删除. 网上查了资料都是insert into t_student values(null,"XXX","XXX,"XXX,"X");这种. 我想在<input type="text" 里自己设定值

mysql订单表如何设计?

mysql订单表如何设计? 商品表和订单表 . 通过一个表来关联. 那删除了商品,相关联的订单表如何显示出这个已经删除的商品? 订单表需要冗余商品名.商品编号.价格等基本信息. 不能只保存一个商品主键,这个是订单表的基本原则,同时生成了订单的商品是不能删除的. 订单表中引用商品表主键,删除使用状态假删. 同时引入商品的状态,总之就是反范式设计,保证一次可以获得全部要的状态,不要进行多表jion. 订单:  分为以下几种        订单凭证(接到客户的订单表),采购订单, 销售订单,委外订单

mysql-JDBC连接MySQL问题,求解答?

问题描述 JDBC连接MySQL问题,求解答? 解决方案 放在con=DriverManager ... 前面.jdbc操作mysql数据库:http://blog.csdn.net/qq_19558705/article/details/49947317应该能帮到你: 解决方案二: JDBC 连接MySQL 问题JDBC连接MYSQL中文乱码问题 .JDBC和Hibernate连接MySQL中文乱码问题 解决方案三: Class.forName("com.mysql.jdbc.Driver&q

请问:java代码通过io流怎么读取MySQL数据库生成jsp文件?谢谢!

问题描述 请问:java代码通过io流怎么读取MySQL数据库生成jsp文件?谢谢! java代码通过io流怎么读取MySQL数据库生成jsp文件 解决方案 IO读取数据库?!你确定? 最次也得是jdbc吧?要有大神实现我也涨涨姿势.. 或者jdbc读到内存再写成文件,再用IO读到内存写成jsp? 解决方案二: io流读取文件数据,数据库都是sql语句获取的,你这问法不懂, 解决方案三: 回复a877536298: <% String url = "jdbc:mysql://localho

php-安装xampp,但我之前学jsp已经安装了tomcat和mysql。会冲突吗?

问题描述 安装xampp,但我之前学jsp已经安装了tomcat和mysql.会冲突吗? 是学html5的时候讲了一下php,html5和php有很大关联吗? 解决方案 端口不冲突,应该就没问题 解决方案二: xampp 有绿色版的,用这个安装就不会.安装版的注意常用路径的修改,这点可能会注突(for windows system) 解决方案三: html5和php完全无关.html5只是一种视图技术,php是一种开发语言.他们互不影响