MyBatis更新資料時,時間欄位的值被自動更新
阿新 • • 發佈:2022-02-04
這個鍋不是MyBatis背,是設計表的時候,時間欄位沒寫預設值,MySQL會自己加上“根據當前時間戳自動更新”,我們要做的就是把它去掉。
問題描述
先說結論:這個鍋不是MyBatis背,是設計表的時候,時間欄位沒寫預設值,MySQL會自己加上“根據當前時間戳自動更新”,我們要做的就是把它去掉。
這是原始資料
然後去做更新資料,更新的欄位不是時間欄位
再來看一下資料庫,發現時間欄位變了
通過Navicat看了下表設計,這裡勾上了“根據當前時間戳自動更新”
我設計表的時候沒這麼設計
匯出這張表,對比一下SQL,發現多了DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0)
解決方案
- 如果是建表時,可以通過加預設值解決這個問題。
- 如果是已建表,可以通過Navicat設計表,去掉“根據當前時間戳自動更新”的勾。或者使用SQL語句更改。
alter table tableName change filedName fieldName timestamp not null default current_timestamp;
以前面的表為例子:
alter table user change updateTime updateTime timestamp not null default '2022-02-04 13:36:00';