使用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
- 变量整理是
collation_connection = utf8mb4_unicode_ci
collation_database = utf8mb4_general_ci
collation_server = utf8mb4_general_ci
如上所述,两个数据库具有完全相同的conf。有人知道为什么一台服务器正在工作而另一台服务器没有?
答案 0 :(得分:0)
我们做了大量的测试 似乎差异在于数据库服务器全局变量,其中带有mariadb的机器具有utf8mb4_general_ci,而mysql具有latin1_swedish_ci 在mariadb服务器“似乎”上更改这些值以解决问题