我多年来一直使用 sql2o 作为 ORM。它重量轻,速度非常快。
最近 MySQL DATETIME 到 sql.Timestamp 的映射已停止为最新的 MySQL 排序 UTF-8 工作。每个依赖项都是 POM 中最新的。错误信息是:
“org.sql2o.Sql2oException:尝试将列 dt_created 转换为类型类 java.sql.Timestamp 时出错”
从字面上看,将字段映射到 DATETIME 的 Java 类已有多年历史,并且已经使用了数十次而没有失败。
我已经将此映射与 Java 1.8 和 Java 11 一起使用,在许多产品中都没有出现问题。有没有人看到 sql2o 的一个怪癖导致它突然停止使用时间戳?突然被“窒息”的数据如下。我应该注意到,这些数据是用 sql2o 在不同的产品中编写的。数据是:
2021-04-03 20:46:59
为 Java 11 编译。相关的 POM 依赖项:
<dependency>
<groupId>org.sql2o</groupId>
<artifactId>sql2o</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
更新:我找到了错误所在的地方,但是在哪里提交错误报告非常混乱。
问题是 Spring Boot 默认使用连接器 8.0.26。事实证明,问题不在于为访问数据库而构建的 JAR(并且位于我们公司的 Artifact 服务器中)。问题是使用连接器 8.0.26 的 Spring boot 调用被破坏。当我覆盖 Spring Boot MVN 并直接使用 8.0.16 时,一切都会再次运行。
使用 sql2o 提交错误报告,但不清楚这是错误实际出现的地方。