[MariaDB] MariaDB5.5でdatetime型のデフォルトnow()は不可

ローカルで問題なかったDBマイグレーションがテストサーバーで失敗した。エラーが起きたのはdatetime型カラムのデフォルトにnow()を指定している箇所。

DBエンジンはMariaDB 5.5.60 (ちなみにローカルはMySQL 5.7.27)。

簡単なSQLで試してみる。

datetime型にnow()をデフォルトにできない。

timestamp型だとnow()をデフォルトにできる

MariaDBの仕様かなと思って調べると以下の記事がヒット。

mysql – MariaDB CURRENT_TIMESTAMP default – Stack Overflow
https://stackoverflow.com/questions/40864951/mariadb-current-timestamp-default

CURRENT_TIMESTAMP as a default for DATETIME type is only available in 10.x.
If you’re using 5.5, it should a TIMESTAMP column.

MariaDBを10.xにアップグレードすれば解決するみたいだ。

参考サイト

MySQLのDATETIME型とTIMESTAMP型の違いを検証してみた – Qiita
https://qiita.com/ykawakami/items/2449a24e3b82ff0cbab6

MySQL :: MySQL 5.6 リファレンスマニュアル :: 11.3.1 DATE、DATETIME、および TIMESTAMP 型
https://dev.mysql.com/doc/refman/5.6/ja/datetime.html

MySQL :: MySQL 5.6 リファレンスマニュアル :: 11.3.5 TIMESTAMP および DATETIME の自動初期化および更新機能
https://dev.mysql.com/doc/refman/5.6/ja/timestamp-initialization.html

mysql – Invalid default value for ‘dateAdded’ – Stack Overflow
https://stackoverflow.com/questions/9005766/invalid-default-value-for-dateadded