sql >> Databáze >  >> RDS >> Mysql

LastInsertId PDO pro MySQL je sporná?

MySQL nevrací poslední ID vložení jedné relace do jiné relace.

http://dev.mysql .com/doc/refman/5.6/en/information-functions.html#function_last-insert-id říká:

K vašim komentářům:

Toto bylo chování MySQL od začátku. Vrácení posledního ID vložky by bylo celkem zbytečné, pokud by to bylo náchylné na konfliktní podmínky, to znamená, pokud by vložky v jiných relacích mohly znečišťovat vaši relaci.

Jednou z možností je, že používáte trvalá připojení, protože staré verze PHP měly chybu, že bylo možné dát připojení k novému požadavku PHP a udělit přístup ke stavu v rozsahu relace z předchozího požadavku PHP. Jinými slovy, věci jako zámky a transakce a dočasné tabulky a uživatelské proměnné a poslední vložené id by mohly přežít až do následného požadavku PHP. Tyto problémy by měly být vyřešeny v PHP 5.3 pomocí ovladače mysqlnd; trvalé připojení by mělo být "resetováno" do počátečního stavu.

Dalším možným vysvětlením je, že to opravdu funguje správně a vy se ve svých pozorováních mýlíte. Navrhoval bych to tedy pečlivě a metodicky otestovat.

aktualizace: podle vaší odpovědi , tento problém neměl nic společného s MySQL nebo PDO nebo lastInsertId. Zdá se, že jste vůbec neviděli nesrovnalosti ve výstupu svého kódu PHP, ale ve statistikách výkonu sítě v Chrome Dev Tools jste viděli neočekávaná čísla.



  1. ASP.NET používá SqlConnection connect MySQL

  2. Jak vrátit výsledky dotazu jako seznam oddělený čárkami v PostgreSQL

  3. MySQL XML dotazování

  4. mysql LOAD DATA INFILE s automatickým zvýšením primárního klíče