MySQL5.6.5以前のDATETIME型にはDEFAULT CURRENT_TIMESTAMPを設定できない

現象

MySqlでDDL発行しようとしたら構文エラーでテーブル生成に失敗した。

updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`

原因

MySqlのバージョンが5.6.5以前のため、DATETIME型がCURRENT_TIMESTAMPに対応していなかった。
公式ドキュメントにも記述あり。
https://dev.mysql.com/doc/refman/5.6/ja/timestamp-initialization.html

対応

MySqlのバージョンを上げる

業務で使用するシステムの場合、対応は非常に困難。
※古いシステムを改修し続けている場合、良くある。

TIMESTAMP型に作り変える

updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

公式ドキュメントを参照/確認の上、アプリ側の処理に影響がなければ問題なし。
https://dev.mysql.com/doc/refman/5.6/ja/datetime.html

コメントを残す

メールアドレスが公開されることはありません。