sql >> Base de Datos >  >> RDS >> Mysql

La tabla [tablename] no está bloqueada

Tienes que bloquear todas las mesas , que desea utilizar hasta el LOCK en lanzamiento. Puedes dar completely_different_table_2 solo un READ LOCK , que permite que otros procesos lean esta tabla mientras está bloqueada:

LOCK TABLES table_1 WRITE, completely_different_table_2 READ;

PD:MySQL tiene una razón para hacerlo. Si solicita un LOCK , desea congelar un estado consistente de sus datos. Si lee datos de completely_different_table_2 dentro de tu LOCK , sus datos escritos en table_1 dependerá de alguna manera de esta otra tabla. Por lo tanto, no desea que nadie cambie esta tabla durante su LOCK y solicita un READ LOCK para esta segunda mesa también. Si sus datos se escriben en table_1 no depende de la otra tabla, simplemente no la consulte hasta que LOCK se libera.