mysql中的character_result_set为空

时间:2016-02-28 07:18:07

标签: java mysql hibernate utf-8

我正在使用mysql DB。 DB是amazone RDS DB。

执行此查询时:show global variables like '%character%'; 我得到以下结果: enter image description here

但是当我执行这个查询时:show variables like '%character%';我得到了这个结果: enter image description here

如您所见,character_set_results为空。我尝试了以下查询,没有任何更改空值:

ALTER DATABASE myDB CHARACTER SET utf8;
ALTER DATABASE myDB CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER DATABASE myDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
SET CHARACTER_SET_RESULTS=UTF8
SET  NAMES 'utf8';
SET CHARACTER SET 'utf8';
SET session CHARACTER_SET_RESULTS = utf8;

据我所知,第二个查询返回会话参数。这会影响我得到的结果吗?

我有两台机器。开发机器,我用eclipse运行应用程序(这是一个带有hibernate的java应用程序),另一个是部署机器。在开发机器上一切正常,但在部署机器上有时我会得到????或从DB获取数据时的其他奇怪字符。 两台机器都连接到同一个DB,数据在db本身中存储得很好。 连接网址也是jdbc:mysql://myDB:3306/myApp?autoReconnect=true&useUnicode=true&createDatabaseIfNotExist=true&characterEncoding=utf-8

任何可能导致这种情况的想法?

1 个答案:

答案 0 :(得分:0)

多个问号通常来自:

  • 您是INSERTing中文(或任何非西欧文字)。
  • 您说SET NAMES utf8声明客户端字节是utf8编码的(正确)。
  • 但是表格列被声明为CHARSET latin1。 < - 这就是问题所在。
  • 由于无法将中文字符转换为latin1,'?'存储

请提供SHOW CREATE TABLE以确认上述假设。

如果您正在获得其他奇怪的字符",请提供:

SELECT col, HEX(col) FROM ...

显示"奇怪字符"。

的存储内容示例