web-dev-qa-db-ja.com

MySQLタイムスタンプフィールドでNULL値を有効にする方法は?

MariaDBサーバー(バージョン10.1.23)から別のMariaDBサーバー(バージョン10.1.37)にバックアップを復元する必要があります。しかし、このバージョンにはデフォルトで非常に厳密なモードがあり、タイムスタンプフィールドにNULL値を許可しないため、バックアップを復元すると以下のエラーがスローされます。

1067-'dt'の無効なデフォルト値

この値を/etc/mysql/conf.d/の* .cnfファイルに追加してみます

[mysqld]

sql_mode=ALLOW_INVALID_DATES,IGNORE_SPACE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
explicit_defaults_for_timestamp=OFF

クエリ:

show variables like 'sql_mode';
show variables like 'explicit_defaults_for_timestamp';

変数の変更された値を表示しますが、機能しません。どうして?

1
Qwentor
ALTER TABLE table_name 
  MODIFY dt TIMESTAMP NULL;

これにより、名前table_nameのテーブルが変更され、列dtがNULL可能に設定されます。

3
Vladix