2011-09-27 55 views
12

,我發現了以下情況例外通過JDBC更新使用MySQL中的一行:MySQL的:數據截斷:不正確的日期時間值: '2006-10-01 2時22分44秒'

com.mysql.jdbc .MysqlDataTruncation:數據截斷:不正確的日期時間值: '2006-10-01 2時22分44秒'

的列定義爲:

'created_on_service時間戳NULL DEFAULT NULL'

該列上沒有索引或外鍵。

顯然這不是數據類型的問題。在那個日期時間之前和之後,我都在那張表中有值。我在上午2:22之前和之後都有價值觀。

+0

這可能有助於http://stackoverflow.com/questions/73109/mysql-data-truncation-error – Rasika

+1

該鏈接是關於文本數據,特別是多字節字符集。這不適用。在我發佈之前,我確實搜索過類似的問題,但沒有運氣,我很害怕。 – pricj004

回答

14

解決了它。

原來2006年10月1日在南澳大利亞是夏令時的開始。時鐘在上午2點前進1小時,所以當天沒有上午2點22分:從上午2點直到3點01分。

我將db時區更改爲UTC,這應該可以解決此問題。

+0

想知道我們還有什麼選擇,如果改變db-timezone是不可行的。儘管如此,通過指出問題,你確實節省了大量的疲倦。 – linuxeasy

0

您沒有顯示確切的更新SQL。不過,可能是你忘了日期部分

正確格式爲YYYY-MM-DD HH:mm:ss格式

日期值應爲以下格式2011-11-01 12點32分01秒

+0

我正在使用JDBC,所以確切的SQL被遮蓋了,但從我得到的錯誤消息來看,值已經是yyyy-mm-dd hh:mm:ss格式。 – pricj004

+0

對於Java,使用24小時制時鐘的真實格式應該是:「yyyy-MM-dd HH:mm:ss」 – theINtoy

2

我們升級了MySQL服務器,但沒有升級mysql連接器jar。我們遇到了這個問題。後來我發現這是由於舊罐子。我升級了它,這個問題就消失了。

4

我通過升級我的MySQL連接器JAR,並將mysql.jar複製到Tomcat lib目錄,修復了同樣的問題(com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'perev_start_time' at row 1)。

MySQL服務器的版本是5.6,MySQL連接器是mysql-connector-java-5.1.30-bin.jar

+0

歡迎使用堆棧溢出。一般而言,後續問題不應作爲答案發布,而應[單獨提問](http://stackoverflow.com/questions/ask)。不過,請隨時鏈接回這個問題。 – Pokechu22

+2

這看起來不像一個新問題 – AbcAeffchen

相關問題