Я сделал это, как показано ниже
-- connection 1
START TRANSACTION;
LOCK TABLES [table_name] WRITE;
-- connection 2
START TRANSACTION;
SELECT * FROM [table_name]; -- waiting for table metadata lock
Я не понимаю вышеописанную ситуацию.
Я думал, WRITE LOCK не препятствует выполнению запроса SELECT.
Когда я сделал, как показано ниже,
-- connection 1
START TRANSACTION;
UPDATE [table_name] SET [column = value] WHERE id = 1;
-- connection 2
START TRANSACTION;
SELECT * FROM [table_name] WHERE id = 1; -- doesn't wait
SELECT не ждет, как вы видели.
И я подумал, что WRITE LOCK также работает как предложение UPDATE.
Но похожекак нет ..
Теперь я знаю, что-то не так?