java – 无法将值从列XX转换为“2012-04-05 10:20:00”到TIMESTAMP

当JDBC尝试将MySQL(5.1.51)中的有效日期时间转换为java.sql.timestamp时,将抛出java.sql.sqlException.一个例子是:

java.sql.sqlException: Cannot convert value '2012-04-05 10:20:00' from column 40 to TIMESTAMP

这是第一次

Versions:
MysqL: 5.1.51
J/Connector: 5.1.19
Column Definition:  DATETIME
Java Type:   java.sql.Timestamp

堆栈跟踪:

Cannot convert value '2012-04-05 10:20:00' from column 40 to TIMESTAMP.
    at com.MysqL.jdbc.sqlError.createsqlException(sqlError.java:1073)
    at com.MysqL.jdbc.sqlError.createsqlException(sqlError.java:987)
    at com.MysqL.jdbc.sqlError.createsqlException(sqlError.java:982)
    at com.MysqL.jdbc.sqlError.createsqlException(sqlError.java:927)
    at com.MysqL.jdbc.ResultSetRow.getTimestampFast(ResultSetRow.java:1335)
    at com.MysqL.jdbc.BufferRow.getTimestampFast(BufferRow.java:576)
    at com.MysqL.jdbc.ResultSetImpl.getTimestampInternal(ResultSetImpl.java:6466)
    at com.MysqL.jdbc.ResultSetImpl.getTimestamp(ResultSetImpl.java:6066)
    at com.MysqL.jdbc.ResultSetImpl.getTimestamp(ResultSetImpl.java:6104)
    at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:300)
    at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:300)
    at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:300)

DAO类最近没有被修改过.服务器上最近唯一的变化是将MysqL从5.1.46升级到5.1.51

最佳答案
您可以通过向JDBC连接URL添加useFastDateParsing = false来禁用快速日期分析.例如,以下可能会解决您的问题:

jdbc:MysqL://yourHostName:3306/yourDbName?useUnicode=true&useFastDateParsing=false&characterEncoding=UTF-8

相关文章

昨天的考试过程中,有个考点的服务器蓝屏重启后发现Mysql启动不了(5.6.45 x32版本,使用innoDB),重装后...
整数类型 标准 SQL 中支持 INTEGER 和 SMALLINT 这两种类型,MySQL 数据库除了支持这两种类型以外,还扩...
一条 SQL 查询语句结构如下: SELECT DISTINCT <select_list> FROM <left_table&...
数据备份 1. 备份数据库 使用 mysqldump 命令可以将数据库中的数据备份成一个文本文件,表的结构和数据...
概述 在实际工作中,在关系数据库(MySQL、PostgreSQL)的单表数据量上亿后,往往会出现查询和分析变慢...
概述 触发器是 MySQL 的数据库对象之一,不需要程序调用或手工启动,而是由事件来触发、激活,从而实现...