Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A tabela [tablename] não está bloqueada


Você precisa bloquear todas as tabelas , que você deseja usar até que o LOCK é libertado. Você pode fornecer completely_different_table_2 apenas um READ LOCK , que permite que outros processos leiam esta tabela enquanto ela está bloqueada:
LOCK TABLES table_1 WRITE, completely_different_table_2 READ;

PS:MySQL tem uma razão para fazê-lo. Se você solicitar um LOCK , você deseja congelar um estado consistente de seus dados. Se você ler dados de completely_different_table_2 dentro do seu LOCK , seus dados gravados em table_1 dependerá de alguma forma dessa outra tabela. Portanto, você não quer que ninguém altere esta tabela durante o seu LOCK e solicite um READ LOCK para esta segunda tabela também. Se seus dados forem gravados em table_1 não depende da outra tabela, simplesmente não a consulte até que o LOCK é libertado.