带有mariadb的IncorrectString而不是mysql5.5

时间:2017-10-23 17:14:49

标签: java mysql mariadb glassfish-4 payara

使用payara(glassfish)的java应用程序尝试将电子邮件的正文保存到db中的列中(使用eclipslink) 我们在2个不同的服务器上有相同的应用程序,对于dbserver不同:第一个是使用mariadb 10.1.26(java 1.8.0_131),第二个是使用mysql 5.5.57(java 1.8.0_144) 来自第一台服务器的同一邮件抛出

Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xEF\xBF\xBD1 h...' for column 'msg_body' at row 1

对我来说真正奇怪的是,使用第二台服务器导入无法进行,没有警告,机身已保存

我们已经检查了两台服务器的配置,看起来两者都是平等的 以下两个数据库完全相同:

- 所有表都使用character_set_name latin1

- 变量整理是

collat​​ion_connection = utf8mb4_unicode_ci

collat​​ion_database = utf8mb4_general_ci

collat​​ion_server = utf8mb4_general_ci

如上所述,两个数据库具有完全相同的conf。有人知道为什么一台服务器正在工作而另一台服务器没有?

1 个答案:

答案 0 :(得分:0)

我们做了大量的测试 似乎差异在于数据库服务器全局变量,其中带有mariadb的机器具有utf8mb4_general_ci,而mysql具有latin1_swedish_ci 在mariadb服务器“似乎”上更改这些值以解决问题