分享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。

推薦閱讀: