1. 程式人生 > >there can be only one TIMESTAMP column with CURRENT_TIME in DEFAULT or ON UPDATE clause

there can be only one TIMESTAMP column with CURRENT_TIME in DEFAULT or ON UPDATE clause



         [Err] 1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause


        一個表中出現多個時間戳欄位的定義,並設定了其中一個預設為Current_timestamp會報此類錯誤。
      原因是當你給一個timestamp設定為on update current_timestamp的時候,其他的timestamp欄位需要顯式設定default值。
      但是如果你有兩個timestamp欄位,但是隻把第一個設定為current_timestamp而第二個沒有設定預設值,MySQL也能成功建表,但是反過來就不行;

      所以,有兩種解決辦法:

      方法一:給所有的時間戳TIMESTAMP設定預設值DEFAULT值;

      方法二:升級Mysql,將Mysql升級到5.7版本以上就不會出現類似的問題了。

      方法三:將設定為CURRENT_TIMESTAMP的時間戳欄位放在所有沒有設定預設值的時間戳欄位前面,則可以建表成功(實際上CURRENT_TIMESTAMP時間戳預設值只能設定一個或者不設定,不能有兩個以上)。

       如下表所示:將設定了CURRENT_TIMESTAMP的時間戳create_Time欄位設定在其他時間戳(start_time和end_time)前面,則建立成功。