Domanda

Come faccio a impostare il livello di isolamento di una transazione a 'SERIALIZZABILE' in PHP utilizzando mysqli? Ho cercato dappertutto e non riesco a trovare tutte le informazioni su di esso.

Qui è una spiegazione dei livelli di isolamento.

È stato utile?

Soluzione

Si può solo impostare il livello di isolamento in una query prima di eseguire le sue dichiarazioni. Questo supporre che si fa tutto utilizzando la stessa sessione:

$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
$mysqli->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");
...

Si consiglia inoltre di disattivare autocommit prima mano dal momento che cambia la isolamento serializzabile funziona .

Altri suggerimenti

Risposta breve:

$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
$mysqli->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");

Long Risposta:. A meno che non si utilizza il SESSION o GLOBAL il modificatore, l'impostazione del livello di transazione si applicherà solo alla successiva interrogazione

TLDR;

Secondo il MySQL documentazione con InnoDB tabelle:

  

Senza alcun SESSION o parola chiave GLOBALE:

     

L'informativa è resa solo per il prossimo singolo transazione eseguita   all'interno della sessione.

     

Le transazioni successive tornare a utilizzare il valore sessione del nome   caratteristiche.

     

La dichiarazione non è consentita all'interno di transazioni

Si noti che impostando il flag GLOBAL interesserà tutti successiva query sessioni esistenti non saranno influenzate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top