ホームページ >データベース >mysql チュートリアル >MySQLnd のアップグレード後、MySQL INSERT クエリが「不正な日付値: '0000-00-00'」で失敗するのはなぜですか?

MySQLnd のアップグレード後、MySQL INSERT クエリが「不正な日付値: '0000-00-00'」で失敗するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-22 06:43:14537ブラウズ

Why Does My MySQL INSERT Query Fail with

MySQL エラー: INSERT クエリの「不正な日付値: '0000-00-00'」

問題:

ユーザーが日付列を含むテーブルに値を挿入しようとすると、エラーが発生します。 Web サイトからの挿入が成功したにもかかわらず、phpMyAdmin。エラー メッセージ:「不正な日付値: '0000-00-00'」が表示されます。

分析:

エラーの根本原因は変更に関連していますMySQLnd 5.0.12 から 5.7.11 にアップグレードした後の MySQL の SQL モード。 MySQL 5.7 では、デフォルトで厳密モードが有効になっており、より厳格なデータ検証ルールが適用されます。日付列のデフォルト値「0000-00-00」はこれらのルールに違反しているため、エラーが発生します。

解決策:

問題を解決して、有効な日付値として「0000-00-00」を挿入するには、厳密モードを無効にする必要があります。これは、次のクエリを実行することで実現できます。

SET GLOBAL sql_mode = '';

追加情報:

厳密モードを有効にすると、データ型と値に特定のルールが強制されるため、データの整合性が保証されます。ただし、これらのルールに厳密に従わないデータを挿入しようとすると、エラーが発生する可能性もあります。厳密モードを無効にすると、ユーザーはこれらのチェックをバイパスし、特定のコンテキストでは有効な「0000-00-00」などのデータの挿入を許可できます。

データの整合性が重要である場合は、次の点に注意することが重要です。アプリケーションでは、厳密モードを無効にした場合の影響を慎重に評価する必要があります。無効なデータがデータベースに保存されないように、カスタム検証およびエラー処理メカニズムを実装することを検討してください。

以上がMySQLnd のアップグレード後、MySQL INSERT クエリが「不正な日付値: '0000-00-00'」で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。