Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Khắc phục lỗi MySQL ERROR 1099 (HY000): Table was locked with a READ lock

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.