Heim > Datenbank > MySQL-Tutorial > Warum gibt LAST_INSERT_ID() von MySQL 0 zurück und wie kann ich das Problem beheben?

Warum gibt LAST_INSERT_ID() von MySQL 0 zurück und wie kann ich das Problem beheben?

DDD
Freigeben: 2024-12-22 11:25:10
Original
834 Leute haben es durchsucht

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

MySQL: Fehlerbehebung bei LAST_INSERT_ID(), das 0 zurückgibt

In MySQL gibt die Funktion LAST_INSERT_ID() die ID zurück, die für die zuletzt eingefügte Zeile generiert wurde eine AUTO_INCREMENT-Spalte. Sie sind jedoch auf ein Problem gestoßen, bei dem trotz des Einfügens neuer Datensätze in eine Tabelle durchgängig 0 zurückgegeben wird.

Eine Untersuchung ergab, dass das Problem auf Ihre MySQL-Konfiguration zurückzuführen ist. Sie haben erwähnt, dass die PHP-Funktionen mysql_insert_id und PDO::lastInsertId() ebenfalls kein Ergebnis liefern. Dies deutet darauf hin, dass das Problem nicht spezifisch für die Funktion LAST_INSERT_ID() ist, sondern eher in der MySQL-Verbindung selbst liegt.

Die Lösung für dieses Problem besteht darin, den Parameter PersistentConnections in Ihrer MySQL-Konfigurationsdatei auf TRUE zu setzen. Dadurch wird sichergestellt, dass Ihr PHP-Skript für die Dauer seiner Ausführung dieselbe Verbindung zur Datenbank aufrechterhält. Wenn PersistentConnections auf FALSE gesetzt ist, wird für jede Abfrage eine neue Verbindung erstellt, wodurch sich die CONNECTION_ID ändert. Dadurch wird LAST_INSERT_ID() wirkungslos, da die Verbindung mit dem letzten Einfügevorgang nicht nachverfolgt werden kann.

Das Festlegen von PersistentConnections auf TRUE löst dieses Problem, sodass Ihr Skript dieselbe Verbindung wiederverwenden und somit die AUTO_INCREMENT-ID korrekt zurückgeben kann des zuletzt eingefügten Datensatzes. Weitere Informationen finden Sie außerdem in der Dokumentation zu „Jede Abfrage erstellt eine neue CONNECTION_ID()“. Vielen Dank an dnagirl für die Unterstützung bei der Lösung dieses Problems.

Das obige ist der detaillierte Inhalt vonWarum gibt LAST_INSERT_ID() von MySQL 0 zurück und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage