首页 > 解决方案 > sql2o 是否适用于最新的 MySQL 版本?

问题描述

我多年来一直使用 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 提交错误报告,但不清楚这是错误实际出现的地方。

标签: sql2o

解决方案


推荐阅读