検索

ホームページ  >  に質問  >  本文

php - Mysql 5.7 バージョン以降のタイムスタンプの問題

環境:

>select version();
> 5.7.16

質問:

テーブルには created_atupdated_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 の上位バージョンと下位バージョンの両方と互換性があります。

&^ - &^

仅有的幸福仅有的幸福2839日前685

全員に返信(3)返信します

  • 高洛峰

    高洛峰2017-05-16 13:11:07

    5.7 では、デフォルト値を 1970 年から 20 年前の範囲内にする必要があります。値を 2000-01-01 00:00:00 に設定して試してみてください。

    返事
    0
  • 阿神

    阿神2017-05-16 13:11:07

    32 ビット システムは 2038 年になるようです。 64 ビット システムを使用してください。また、タイムスタンプ付きでデータを保存するようにしてください。

    返事
    0
  • 滿天的星座

    滿天的星座2017-05-16 13:11:07

    この問題を update_at フィールドの要件の観点から見ると、文字通り、このフィールドはレコードの更新時刻をテーブル化するために使用されるべきであることがわかります。
    更新時刻にデフォルト値があるが、そのデフォルト値がレコードの更新/追加時に挿入された現在のデータベース時刻ではない場合 (件名は 0000-00-00 00:00:00 を使用)、現在のデータベース以外の値このフィールドの意味は存在しません (冗長/間違ったデータ)。
    データベース内の間違ったデータに対応し、保存する必要はありません。
    要約すると、質問者は update_at フィールドにデフォルト値を与えないことが可能かどうかを知りたいのですか?

    返事
    0
  • キャンセル返事