MySQL エラー 1067 のトラブルシューティング: 新しい列の追加中に 'created_at' のデフォルト値が無効です
新しい列を追加してテーブルを変更しようとしていますこの列ではエラー「ERROR 1067」が発生する場合があります。 (42000): 'created_at' のデフォルト値が無効です。」このエラーは通常、タイムスタンプ列を変更するときに発生します。ただし、タイムスタンプ以外の列を追加するときにも発生する可能性があります。
原因:
このエラーは、MySQL の sql_modes 設定によって発生します。具体的には、「NO_ZERO_IN_DATE」モードと「NO_ZERO_DATE」モードにより、デフォルトのタイムスタンプ値「0000-00-00」と「00:00:00」が created_at 列と updated_at 列に保存されなくなります。
解決策:
エラーを解決するには、 sql_modes 設定の「NO_ZERO_IN_DATE」および「NO_ZERO_DATE」モード。
手順:
現在の確認sql_modes:
show variables like 'sql_mode' ;
問題のあるモードの削除:
現在のモードを一時的に無効にしますセッション:
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
グローバル モードを永続的に設定します:
SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
追加の再試行列:
ALTER TABLE investments ADD bank TEXT;
注:
MySQL の新しいバージョンのデフォルトの sql_mode には、「NO_ZERO_IN_DATE」と「NO_ZERO_DATE」が含まれています。 "モード。したがって、sql_modes 設定を定期的に確認し、このエラーが発生した場合は必要な調整を行うことが重要です。
以上がMySQL エラー 1067: 'created_at' のデフォルト値が無効ですというメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。