天天看點

mysql s1009_Extracted SQL state class 'S1' from value 'S1009'

mysql s1009_Extracted SQL state class 'S1' from value 'S1009'
mysql s1009_Extracted SQL state class 'S1' from value 'S1009'
mysql s1009_Extracted SQL state class 'S1' from value 'S1009'
mysql 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