ホームページ >データベース >mysql チュートリアル >MySQLnd のアップグレード後、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 サイトの他の関連記事を参照してください。