ホームページ >データベース >mysql チュートリアル >MySQL の LAST_INSERT_ID() が 0 を返すのはなぜですか?それを修正するにはどうすればよいですか?
MySQL: 0 を返す LAST_INSERT_ID() のトラブルシューティング
MySQL では、LAST_INSERT_ID() 関数は、最後に挿入された行に対して生成された ID を返します。 AUTO_INCREMENT列。ただし、テーブルに新しいレコードを挿入したにもかかわらず、一貫して 0 が返されるという問題が発生しました。
調査したところ、問題は MySQL 構成に起因しているようです。 PHP 関数 mysql_insert_id および PDO::lastInsertId() も結果を返さないと述べました。これは、問題が LAST_INSERT_ID() 関数に固有のものではなく、MySQL 接続自体にあることを示唆しています。
この問題の解決策は、MySQL 構成ファイルで PersistentConnections パラメータを TRUE に設定することです。これにより、PHP スクリプトは、操作中にデータベースへの同じ接続を維持することができます。 PersistentConnections が FALSE に設定されている場合、クエリごとに新しい接続が作成され、CONNECTION_ID が変更されます。その結果、最後の挿入操作との接続を追跡できないため、LAST_INSERT_ID() は無効になります。
PersistentConnections を TRUE に設定すると、この問題が解決され、スクリプトが同じ接続を再利用できるようになり、AUTO_INCREMENT ID を正しく返すことができるようになります。最後に挿入されたレコードの。さらに、詳細については、「クエリごとに新しい CONNECTION_ID() が作成される」に関するドキュメントを参照してください。この問題の解決にご協力いただいた dnagirl に感謝します。
以上がMySQL の LAST_INSERT_ID() が 0 を返すのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。