2013年1月16日

解決 Grails Domain Date + MySQL 發生錯誤 Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp


假設有個 Domain Class 的定義:

class Book {
    Date publish
}

其中 publish 用來儲存發佈日期,所以在資料庫會有:

名稱為 book 的 DB Table
名稱為 publish 的 Column(DATETIME)

但是在資料被建立時,MySQL 會自動在缺少日期設定、又是 NOT NULL 的日期欄位,自動填入「0000-00-00 00:00:00」這個時間。

在 Hibernate 取出資料時,由於這個不正確的時間值轉換成 Timestamp 會發生失敗,所以就會噴出錯誤如下:

2013-01-16 20:40:53,443 [ajp-bio-8009-exec-1] ERROR util.JDBCExceptionReporter  - Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp

解決的方法不難,就是再 JDBC Connection String 加上參數設定。

zeroDateTimeBehavior=convertToNull


沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!