【发布时间】:2018-04-04 07:58:39
【问题描述】:
使用 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
对我来说真正奇怪的是,在第二台服务器上,导入变得流畅,没有警告,正文被保存
我们已经检查了两台服务器的配置,并且似乎都相等 2 个数据库的以下内容完全相同:
-所有表都带有character_set_name latin1
-变量排序规则是
collation_connection = utf8mb4_unicode_ci
collation_database = utf8mb4_general_ci
collation_server = utf8mb4_general_ci
如前所述,这两个数据库具有完全相同的 conf。有人知道为什么一台服务器正常工作而另一台不工作吗?
【问题讨论】:
-
感谢您指出这一点。无论如何,它并不能解释为什么同一个应用程序在两个系统上的工作方式不同
-
由于您的应用程序试图保留一个用于指示数据已损坏的特殊符号,如果 MariaDB 包含拒绝此类数据的修复程序,我不会感到惊讶,因为存储损坏的数据很危险数据。
标签: java mysql mariadb glassfish-4 payara