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

PHP PDO MySQL e come si comporta davvero con le transazioni MySQL?

https://dev.mysql.com /doc/refman/5.7/en/innodb-autocommit-commit-rollback.html dice:

Quindi, quando imposti autocommit=0 in una sessione (chiamala sessione 1), questo implicitamente si apre una transazione e la lascia aperta a tempo indeterminato.

Il livello di isolamento della transazione predefinito è REPEATABLE-READ. Quindi la tua sessione non vedrà una vista aggiornata delle modifiche salvate dal lavoro di altre sessioni fino a quando la sessione 1 non eseguirà il commit o il rollback in modo esplicito.

Il tuo LOCK TABLES in un'altra sessione 2 fa causare un commit implicito, ma la sessione 1 non vede il risultato perché è ancora in grado di vedere solo una vista isolata dei dati a causa del proprio snapshot di transazione.