某些服务器上的 MySQL 数据截断错误
Posted
技术标签:
【中文标题】某些服务器上的 MySQL 数据截断错误【英文标题】:MySQL Data Truncation Error on Certain Servers 【发布时间】: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,但这并没有帮助。有谁知道出了什么问题?
谢谢!
【问题讨论】:
【参考方案1】:我的猜测是,当 datenotime 为空时,您会收到此错误。
这是有道理的,因为您要连接 datenotime 和约会时间。如果 datenotime 为 null,那么您只剩下时间,它根本无法转换为任何已知的 datetime 值。
【讨论】:
谢谢你,熏猪肉。但是,我只是仔细检查了一下,并且 datenotime 不为空——它对于这个特定行的值是 '2015-06-15'。以上是关于某些服务器上的 MySQL 数据截断错误的主要内容,如果未能解决你的问题,请参考以下文章
从 Spark 服务器执行 SFTP 时,大型机服务器上的记录级别数据截断