【问题标题】:IncorrectString with mariadb and not with mysql5.5使用 mariadb 而不是 mysql 5.5 的字符串不正确
【发布时间】: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

-变量排序规则是

collat​​ion_connection = utf8mb4_unicode_ci

collat​​ion_database = utf8mb4_general_ci

collat​​ion_server = utf8mb4_general_ci

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

【问题讨论】:

  • 感谢您指出这一点。无论如何,它并不能解释为什么同一个应用程序在两个系统上的工作方式不同
  • 由于您的应用程序试图保留一个用于指示数据已损坏的特殊符号,如果 MariaDB 包含拒绝此类数据的修复程序,我不会感到惊讶,因为存储损坏的数据很危险数据。

标签: java mysql mariadb glassfish-4 payara


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-03-29
    • 1970-01-01
    • 2018-04-17
    • 2015-06-01
    • 2011-09-13
    • 1970-01-01
    • 2016-06-26
    • 2018-11-20
    相关资源
    最近更新 更多