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

La tabella [nometabella] non è bloccata

Devi bloccare ogni tavolo , che vuoi usare fino al LOCK è rilasciato. Puoi fornire completely_different_table_2 solo un READ LOCK , che consente ad altri processi di leggere questa tabella mentre è bloccata:

LOCK TABLES table_1 WRITE, completely_different_table_2 READ;

PS:MySQL ha una ragione per farlo. Se richiedi un LOCK , vuoi bloccare uno stato coerente dei tuoi dati. Se leggi i dati da completely_different_table_2 all'interno del tuo LOCK , i tuoi dati scritti in table_1 dipenderà in qualche modo da quest'altra tabella. Pertanto non vuoi che nessuno modifichi questa tabella durante il tuo LOCK e richiedi un READ LOCK anche per questo secondo tavolo. Se i tuoi dati sono stati scritti su table_1 non dipende dall'altra tabella, semplicemente non interrogarla fino al LOCK viene rilasciato.