私は私のWordpressのデータベースをSQLバックアップから復元しました。ただし、そうすることで、すべてのテーブルが自動インクリメントを失いました。
このSQLを使って再度追加しようとしたとき
ALTER TABLE `mercury_posts` CHANGE `ID` `ID` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT;
エラー#1067 - Invalid default value for 'post_date'
が発生します。これをどのように修正しますか?
私は結局、問題のあるデータベースを削除し、作業データベースから再度バックアップしますが、構造とデータを別々にエクスポートすることによって解決しました。
Post_dateのデフォルト値は0000-00-00 00:00:00です。次のようにsql_mode変数を確認する場合:
show variables like 'sql_mode';
... sql_mode変数が表示され、次のようになります:ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION
NO_ZERO_IN_DATE、NO_ZERO_DATEなしでsql_mode変数を再度設定する必要があります
したがって、前の例では、sql_modeを次のように設定する必要があります。
SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
次に、sql_mode変数を再度チェックして、正しく変更されていることを確認します。
show variables like 'sql_mode';
その後、制限はなくなります; D
ここで解決策を見つけました: https://stackoverflow.com/a/37696251/50491