【问题标题】:MySQL Data Truncation Error on Certain Servers某些服务器上的 MySQL 数据截断错误
【发布时间】:2015-08-28 11:18:22
【问题描述】:

我进行了很多互联网搜索,但找不到与此类似的问题报告,所以我希望这里的人可能知道出了什么问题。在我的 java 代码中,我有一个从数据库中提取数据的查询。我已经确认 SQL 格式正确,并且我在这个 java 文件中的所有其他查询都运行良好。事实上,当我使用开发测试 Tomcat 服务器时,即使这个查询也能正常运行。但是,当我尝试使用开发测试 Resin 服务器(直到最近它一直运行良好)或也使用 Tomcat 的 QA 测试服务器运行此特定查询时,我收到此错误:

com.mysql.jdbc.MysqlDataTruncation:数据截断:不正确的日期时间值:'131500'

我假设的“131500”来自返回的第一个日期时间值的时间部分,即“13:15:00”。 导致问题的该查询的特定部分是这一行:

CONCAT(DATE_FORMAT((SELECT datenotime), '%Y-%m-%d'),' ',DATE_FORMAT((SELECT appointmenttime FROM appointments WHERE appointmentdate = datenotime AND appointments.service_id = service.id), '%T'))

如果我删除它,那么我在任何服务器上都不会遇到问题,所以它只会在时间被格式化和连接时发生。我认为这里的问题一定是一些服务器设置?尽管据我所知,Resin 服务器最近没有发生任何变化。我尝试更新 Resin 的 msyql 连接器 jar,但这并没有帮助。有谁知道出了什么问题?

谢谢!

【问题讨论】:

    标签: java mysql tomcat resin


    【解决方案1】:

    我的猜测是,当 datenotime 为空时,您会收到此错误。

    这是有道理的,因为您要连接 datenotime 和约会时间。如果 datenotime 为 null,那么您只剩下时间,它根本无法转换为任何已知的 datetime 值。

    【讨论】:

    • 谢谢你,熏猪肉。但是,我只是仔细检查了一下,并且 datenotime 不为空——它对于这个特定行的值是 '2015-06-15'。
    猜你喜欢
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多