LoginSignup
4
2

More than 5 years have passed since last update.

【MySQL5.6.5以前】DATETIME型だと初期値、更新値にDEFAULT CURRENT_TIMESTAMPを設定できない

Last updated at Posted at 2017-08-30

現象

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

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2