Mysql
 sql >> база данни >  >> RDS >> Mysql

LastInsertId на PDO за MySQL условие за състезание?

MySQL не връща последния идентификатор за вмъкване на една сесия в друга сесия.

http://dev.mysql .com/doc/refman/5.6/en/information-functions.html#function_last-insert-id казва:

Отново вашите коментари:

Това е поведението на MySQL от самото начало. Връщането на последния идентификатор на вмъкване би било доста безполезно, ако беше податливо на състояние на състезание, тоест ако вмъкванията в други сесии биха могли да замърсят сесията ви.

Една от възможностите е, че използвате постоянни връзки, тъй като старите версии на PHP имаха грешка, че връзка може да бъде дадена на нова PHP заявка и да предостави достъп до състояние с обхват на сесиите от предишна PHP заявка. С други думи, неща като заключвания и транзакции и временни таблици и потребителски променливи и последното вмъкване на идентификатор могат да оцелеят до последваща PHP заявка. Тези проблеми трябва да бъдат разрешени в PHP 5.3 с драйвера mysqlnd; постоянна връзка трябва да бъде "нулирана" до първоначално състояние.

Друго възможно обяснение е, че наистина работи правилно и грешите в наблюденията си. Затова предлагам да го тествате внимателно и методично.

актуализация: според вашия отговор , този проблем нямаше нищо общо с MySQL или PDO или lastInsertId. Изглежда, че изобщо не виждате несъответствия в изхода на вашия PHP код, виждате неочаквани числа в статистическите данни за производителността на мрежата в Chrome Dev Tools.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване на произволни знаци в базата данни на MYSQL

  2. Създайте PHP масив от MySQL колона

  3. MySQL добавя колона NOT NULL

  4. Как да изберете записи от тази връзка?

  5. Редът на колоните в израза за избор влияе ли на скоростта на заявката?