2038 年バグ: 総合ガイド
2038 年バグは、署名付き 32 ビットを使用するシステムで発生する可能性のあるソフトウェアの誤動作の可能性があります。システム時間を 1970 年 1 月 1 日からの秒数として保存する整数。詳細は次のとおりです。内訳:
2038 年問題とは何ですか?
時間が 2038 年 1 月 19 日の 03:14:07 UTC を超えると、32 ビット カウンターがUNIX エポックが「ラップ アラウンド」して、12 月の時刻として解釈される負の値を格納してからの秒数1901.
原因と結果
これは、32 ビット整数の最大値を超えているために発生します。この時刻表現に依存するシステムは、将来の日付を過去の日付と誤って解釈し、エラーや障害を引き起こす可能性があります。
解決策:
- 長いデータ型を使用する (64)
- MySQL または MariaDB では、DATE (日付のみ) または DATETIME の使用を検討してください。 (日付と時刻の) TIMESTAMP の代わりに。
- 追加の解決策については、Wikipedia の 2038 年問題に関するページを参照してください。
- MySQL をバージョン 8.0.28 に更新するか、
代替案:
- データベースで大きな型 (64 ビットなど) を使用します。
使用を妨げる可能性ケース:
- MySQL DATETIME の範囲 (1000 ~ 9999) は TIMESTAMP (1970 ~ 2038) よりも狭いため、生年月日や将来の日付など、2038 を超える日付では潜在的な問題が発生します。
後付け既存のアプリケーション:
- TIMESTAMP を使用する PHP アプリケーションの場合は、列を DATETIME に変換することを検討してください。この変換を実行するには、回答セクションに記載されている手順に従ってください。
リソース:
- 2038 年問題 (Wikipedia): https:// en.wikipedia.org/wiki/ Year_2038_problem
- インターネットは に終わる30 年: https://www.theregister.com/2022/08/06/year_2038_bug_web/
以上が2038 年問題とは何ですか?どうすれば回避できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。