ホームページ >データベース >mysql チュートリアル >MySQL の LAST_INSERT_ID() が 0 を返すのはなぜですか?それを修正するにはどうすればよいですか?

MySQL の LAST_INSERT_ID() が 0 を返すのはなぜですか?それを修正するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-22 11:25:10876ブラウズ

Why Does MySQL's LAST_INSERT_ID() Return 0, and How Can I Fix It?

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 サイトの他の関連記事を参照してください。

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