Giới thiệu
Lỗi ERROR 1099 (HY000): Table '...' was locked with a READ lock and can't be updated xảy ra khi bảng bị khóa đọc (LOCK TABLES ... READ) và bạn cố gắng thực hiện INSERT/UPDATE/DELETE. Cần mở khóa bằng UNLOCK TABLES.
Ví dụ tái hiện và khắc phục
Bước 1: Tạo bảng và chèn dữ liệu
CREATE TABLE demo6 (country_name VARCHAR(100));
INSERT INTO demo6 VALUES ('US'), ('UK'), ('AUS');
Bước 2: Khóa bảng chỉ đọc
LOCK TABLES demo6 READ;
Bước 3: Thử INSERT → Lỗi
INSERT INTO demo6 VALUES ('IND');
-- ERROR 1099 (HY000): Table 'demo6' was locked with a READ lock and can't be updated
Bước 4: Mở khóa và thử lại
UNLOCK TABLES;
INSERT INTO demo6 VALUES ('IND'); -- Thành công
SELECT * FROM demo6;
Kết quả
+--------------+
| country_name |
+--------------+
| US |
| UK |
| AUS |
| IND |
+--------------+
Lưu ý: LOCK TABLES thường dùng cho backup, maintenance. Luôn nhớ UNLOCK TABLES khi xong. Trong ứng dụng, tránh dùng khóa bảng thủ công, hãy dùng transaction (InnoDB) hoặc row-level lock.