Как наложить блокировку WRITE на все таблицы в MySql? Я пробовал следующее, но это дает ошибку.
FLUSH TABLES mytest.mytable1 WITH LOCK;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'WITH LOCK' at line 1
Что ты здесь делаешь? Блокировки в MySQL могут немного сбить с толку, если вы сделаете предположения о том, что, по вашему мнению, они делают.
В FLUSH TABLES
синтаксис не позволяет указать список таблиц так же как приобретение блокировки. FLUSH TABLES WITH READ LOCK
блокирует все таблицы. FLUSH TABLES <tables>
очистит эти таблицы. Существует некоторая неявная блокировка, связанная с очисткой таблиц, поскольку новые записи не могут поступать в таблицу, пока она очищается, но эта неявная блокировка снимается, как только завершается очистка.
Если вы хотите заблокировать определенные таблицы с помощью блокировки записи, LOCK TABLES <table> WRITE
это то, что вы хотите. Здесь вы можете указать список таблиц, разделенных запятыми. Если вы хотите заблокировать все таблицы, вам нужно будет предоставить весь список.
Я хотел бы закончить простым заявлением - ПРОМЫВКА ТАБЛИЦ С БЛОКИРОВКОЙ ЧТЕНИЯ; разрешит всем сеансам операцию ЧТЕНИЯ и не позволит вносить какие-либо изменения в данные для любого сеанса. ТАБЛИЦА БЛОКИРОВКИ имя таблицы WRITE; Блокирует таблицу, и это позволит выполнять чтение или изменение данных для выпущенного сеанса, но не для других сеансов. Спасибо ......