sql >> Database teknologi >  >> RDS >> Mysql

PDO's lastInsertId for MySQL en race tilstand?

MySQL returnerer ikke en sessions sidste indsættelses-id til en anden session.

http://dev.mysql .com/doc/refman/5.6/da/information-functions.html#function_last-insert-id siger:

Om dine kommentarer:

Dette har været MySQL's adfærd siden begyndelsen. At returnere det sidste indsættelses-id ville være ret ubrugeligt, hvis det var modtageligt for en racetilstand, det vil sige, hvis indsatser i andre sessioner kunne forurene din session.

En mulighed er, at du bruger vedvarende forbindelser, fordi gamle versioner af PHP havde en fejl om, at en forbindelse kunne gives til en ny PHP-anmodning og give adgang til sessions-omfattet tilstand fra en tidligere PHP-anmodning. Med andre ord kunne ting som låse og transaktioner og midlertidige tabeller og brugervariabler og sidste indsættelses-id overleve til en efterfølgende PHP-anmodning. Disse problemer bør løses i PHP 5.3 med mysqlnd-driveren; en vedvarende forbindelse skal "nulstilles" til en starttilstand.

En anden mulig forklaring er, at det virkelig fungerer korrekt, og du tager fejl i dine observationer. Så jeg vil foreslå, at du tester det omhyggeligt og metodisk.

opdatering: ifølge dit svar , dette problem havde intet at gøre med MySQL eller PDO eller lastInsertId. Det lyder som om, at du slet ikke så uoverensstemmelser i output af din PHP-kode, du så uventede tal i statistik over netværkets ydeevne i Chrome Dev Tools.



  1. Hvordan opretter man FULLTEXT-indeks på flere kolonner?

  2. Datatype for URL

  3. Brug af jokertegn i mysql tabelnavn

  4. Kolonnen 'user_id' i feltlisten er tvetydig