環境:
>select version();
> 5.7.16
質問:
テーブルには created_at
と updated_at
という 2 つのフィールドがあります。どちらのフィールド タイプも created_at
です。デフォルト値は CURRENT_TIMESTAMP
で、updated_at
のデフォルト値は 0000-00-00 00:00:00
に設定されています。問題が発生した場合は、ステートメントを実行してテーブルを作成するか、エラー コードを報告します。
構文エラーまたはアクセス違反: 1067 'updated_at' のデフォルト値が無効です
updated_at
のデフォルト値を CURRENT_TIMESTAMP
に変更すると、スムーズに実行されますが、Mysql5.7 より前のバージョンでは 1 つのテーブルがサポートされないという別の問題が発生します。デフォルト値が CURRENT_TIMESTAMP
である timestamp
フィールドが 2 つありますか?
それではマスターの皆さんに聞いてください。timestamp
のデフォルト値の問題を解決するにはどうすればよいでしょうか? Mysql の上位バージョンと下位バージョンの両方と互換性があります。
&^ - &^
高洛峰2017-05-16 13:11:07
5.7 では、デフォルト値を 1970 年から 20 年前の範囲内にする必要があります。値を 2000-01-01 00:00:00 に設定して試してみてください。
阿神2017-05-16 13:11:07
32 ビット システムは 2038 年になるようです。 64 ビット システムを使用してください。また、タイムスタンプ付きでデータを保存するようにしてください。
滿天的星座2017-05-16 13:11:07
この問題を update_at フィールドの要件の観点から見ると、文字通り、このフィールドはレコードの更新時刻をテーブル化するために使用されるべきであることがわかります。
更新時刻にデフォルト値があるが、そのデフォルト値がレコードの更新/追加時に挿入された現在のデータベース時刻ではない場合 (件名は 0000-00-00 00:00:00 を使用)、現在のデータベース以外の値このフィールドの意味は存在しません (冗長/間違ったデータ)。
データベース内の間違ったデータに対応し、保存する必要はありません。
要約すると、質問者は update_at フィールドにデフォルト値を与えないことが可能かどうかを知りたいのですか?