Maison >base de données >tutoriel mysql >Pourquoi `LAST_INSERT_ID()` renvoie-t-il 0 dans MySQL ?

Pourquoi `LAST_INSERT_ID()` renvoie-t-il 0 dans MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-02 12:49:40795parcourir

Why Does `LAST_INSERT_ID()` Return 0 in MySQL?

LAST_INSERT_ID() renvoie systématiquement 0 dans MySQL

Présentation du problème :

Insertion de données dans une table MySQL à l'aide de méthodes courantes (comme insérer NULL, 0 ou des parenthèses vides) et ensuite demander le dernier ID inséré (LAST_INSERT_ID()) renvoie 0 de manière cohérente. Ce problème affecte à la fois mysql_insert_id et PDO::lastInsertId() de PHP.

Solution :

Le problème réside dans le fichier de configuration MySQL phpmyadmin. Lorsque PersistentConnections est défini sur FALSE, un nouveau CONNECTION_ID est établi pour chaque requête. Cela invalide le résultat LAST_INSERT_ID() car il est associé à la connexion précédente.

Pour résoudre le problème, définissez PersistentConnections sur TRUE dans le fichier de configuration phpmyadmin. Cela garantit que la même connexion est maintenue sur plusieurs requêtes, permettant à LAST_INSERT_ID() de renvoyer avec précision le dernier identifiant inséré.

Informations supplémentaires :

Pour plus d'informations sur le impact de PersistentConnections, reportez-vous à la rubrique « Chaque requête crée un nouveau CONNECTION_ID()".

Remerciements :

Merci tout particulièrement à dnagirl pour son aide précieuse dans l'identification de ce problème.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn