Extracted SQL state class 'S1' from value 'S1009'

时间:2022-05-01 05:02:30
Extracted SQL state class 'S1' from value 'S1009'
Extracted SQL state class 'S1' from value 'S1009'
Extracted SQL state class 'S1' from value 'S1009'

Extracted SQL state class 'S1' from value 'S1009'

发现不查所有字段时是可以查询的,最后一个个字段尝试,发现是在passwd_time这个字段时有问题,然后看看这个时间
是无效的时间,改成有效时间即可。
 
 
相关链接:

Mysql 时间 '0000-00-00'异常解决

在spring+mybatis项目中,查询mysql数据库遇到一个问题:
java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date
分析看了一下原因,应该是mybatis将date类型的字段转成String类型时,遇到date类型字段为'0000-00-00',转换不了,所以抛出该异常
在网上查了一下资料:mysql数据库的date、timestamp等时间类型默认为'0000-00-00'
解决方案1:数据库连接url增加参数zeroDateTimeBehavior=convertToNull或者round,可以讲默认的'0000-00-00'转换为其他值;
想起之前还碰到过一个问题:以前在DB2中事件类型默认值是’1900-00-00‘,在mysql中却一直报错,经查询发现是mysql的时间类型默认值必须从’1970-00-00‘开始。
另外mysql的时间类型定义时如果不指明为NULL,则默认为not null,产生一个默认值即'0000-00-00'。
所以上面的问题还有两种解决方案:
解决方案2:定义时间类型时给出默认值,例如 date not null default '1970-00-00';
解决方案3:定义时间类型时默认为null,例如 date  null ;
 
备注:
官网给出timestamp类型默认值default 范围是 '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
在中国,由于时区问题为1970-01-01 08:00:01 to 2038-01-19 11:14:07