Mysql 報錯:#1067 - Invalid default value for 'update_time


由於 字段UPDATE_TIME 的字段類型是 timestamp ,默認值是:'0000-00-00 00:00:00'

即:`UPDATE_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新時間';

在對這個表進行創建的時候,提示:

#1067 - Invalid default value for 'update_time

 

原因:

timestamp有效時間在:1970-01-01 00:00:00 到 2037-12-31 23:59:59

timestamp類型特點:
1. 占用4個字節
2. 允許為空值,但是不可以自定義值,所以為空值時沒有任何意義。
3. TIMESTAMP值不能早於1970或晚於2037。這說明一個日期,例如'1968-01-01',雖然對於DATETIME或DATE值是有效的,但對於TIMESTAMP值卻無效,如果分配給這樣一個對象將被轉換為0。
4.值以UTC格式保存( it stores the number of milliseconds)

5.時區轉化 ,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。

6. 默認值為CURRENT_TIMESTAMP(),其實也就是當前的系統時間。
7. 數據庫會自動修改其值,所以在插入記錄時不需要指定timestamp字段的名稱和timestamp字段的值,你只需要在設計表的時候添加一個timestamp字段即可,插入后該字段的值會自動變為當前系統時間。
8. 默認情況下以后任何時間修改表中的記錄時,對應記錄的timestamp值會自動被更新為當前的系統時間。
9. 如果需要可以設置timestamp不自動更新。通過設置DEFAULT CURRENT_TIMESTAMP 可以實現。
修改自動更新:
`field_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
修改不自動更新
`field_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 

解決:

將默認值設置為:1970-01-01 10:00:00之后

 

 

參考文章:

https://blog.csdn.net/souldak/article/details/11737799


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM