分享mysql的current_timestamp小坑及解決
mysql的current_timestamp小坑
報錯
Incorrect table definition;there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
網上的答案基本如下,但是就是沒有具體解決
方案原因是當你給一個timestamp設置為on updatecurrent_timestamp的時候,其他的timestamp字段需要顯式設定default值
但是如果你有兩個timestamp字段,但是隻把第一個設定為current_timestamp而第二個沒有設定默認值,MySQL能成功建表,但是反過來就不行…
我的方案
卸載當前低版本的mysql,安裝5.6以上版本的mysql,推薦mysql5.7版本相對穩定點。
mysql5.5.23 current_timestamp問題
今天新建一個表,裡面兩個字段:創建時間和更新時間,兩個默認值都是當前時間,一執行sql就報錯。
ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
我在其它的項目裡面都是這樣用的sql,而且也能正常用,為什麼今天執行不成功呢?在確認sql沒有語法錯誤後,在網上查瞭一下資料。原來是mysql5.5在一個表內隻支持一個時間字段使用CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP。但是在5.6裡面支持多個。
原版說明
It is not possible to have the current timestamp be the default value for one column and the auto-update value for another column.
解決辦法
去掉創建時間默認值
查看mysql版本號用 status命令
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- MySQL中CURRENT_TIMESTAMP的使用方式
- mysql 實現添加時間自動添加更新時間自動更新操作
- PostgreSQL自動更新時間戳實例代碼
- MySQL幾種更新操作的案例分析
- MySQL 字段默認值該如何設置