在新服务器上测试代码,java.time.localdatetime 无法转换为日期不会在生产中发生

testing code on new server, java.time.localdatetime cannot be converted to date does not happen in production

我不知道为什么期望该字段是 LocalDateTime,而它是一个常规 DateTime。它必须是此环境配置中的某些内容,但我无法理解什么?我已经搜索过,但我得到的只是“如何处理 LocalDateTime”类型的链接,所以没有帮助,因为当这是一个必须至少以与生产相同的代码开始的测试环境时我无法更改所有代码

您需要找出哪些版本的 ACF、MySQL 和 Java 运行正在生产中。即使该应用程序是在 2016 年启动的,也不能保证它是在 CF 2016 上发布的。可能是服务器的旧版本。

select Q.DateStamp from where <id = a single>
example looks like "2016-10-17 17:50:34"

您 运行 是在 IDE 中查询还是 运行 通过 cfquery 查询。需要确保它作为 DateTime 对象 ({ts '2012-12-12 12:12:12'}) 而不是字符串返回。

java.time.localDateTime

A date-time without a time-zone in the ISO-8601 calendar system, such as 2007-12-03T10:15:30.

MariaDB DateTime

MariaDB displays DATETIME values in 'YYYY-MM-DD HH:MM:SS.ffffff'

根据我对 Adrian 的贡献的评论 - 在这种情况下,答案通常是通过比较环境之间的数据源配置找到的 - 最重要的是是否在两个环境中选择了相同的数据库驱动程序,然后是各种高级设置数据源,最后是数据库服务器本身的任何 version/compatibility 设置。