java - character_result_set 在 mysql 中为空

标签 java mysql hibernate utf-8

我正在使用 mysql 数据库。 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;

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

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

知道是什么原因造成的吗?

最佳答案

多个问号通常来自:

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

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

如果您收到“其他奇怪字符”,请提供:

SELECT col, HEX(col) FROM ...

显示为“奇怪字符”存储的内容的示例。

关于java - character_result_set 在 mysql 中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35679836/

相关文章:

java - 在 RXjava 中应用重试

c# - MySQL Connector/Net EF 数据库第一个空间数据类型

java - JPA ManyToMany 使用分组和交叉连接将数据连接在一起

java - Hibernate - 每个操作的 ThreadLocal<EntityManager> 与 EntityManager

hibernate - 哪个在 hibernate native 查询或 HQL 中的性能更好

java - Android应用程序上下文参数

Java - 获取一个从100到999的随机数

java - Hibernate 不创建外键约束

php - 用于 POST 的 JQuery 日期选择器

php - 将另一个表列的总和添加到查询中