Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การแก้ไข MySQL Error 1099: Table Locked with READ Lock

ปัญหา: Table Locked with READ Lock

เมื่อใช้ LOCK TABLES table_name READ ตารางจะถูกล็อกสำหรับอ่านอย่างเดียว ไม่สามารถ INSERT/UPDATE/DELETE ได้

วิธีแก้: ใช้ UNLOCK TABLES

-- ล็อกตารางสำหรับอ่าน
LOCK TABLES demo6 READ;

-- พยายาม INSERT → Error 1099
INSERT INTO demo6 VALUES ('IND'); 
-- ERROR 1099 (HY000): Table 'demo6' was locked with a READ lock and can't be updated

-- ปลดล็อก
UNLOCK TABLES;

-- INSERT ได้ตามปกติ
INSERT INTO demo6 VALUES ('IND'); -- OK

คำอธิบาย Lock Types

  • READ LOCK: อื่นๆ อ่านได้ แต่ никтоเขียนไม่ได้ (รวมถึง Session ที่ล็อกด้วย)
  • WRITE LOCK: เฉพาะ Session ที่ล็อกเท่านั้นที่อ่าน/เขียนได้ คนอื่นรอ

แนวทางปฏิบัติ: ใช้ UNLOCK TABLES ทุกครั้งหลังใช้งานเสร็จ หรือใช้ Transaction (START TRANSACTION, COMMIT/ROLLBACK) แทนการ Lock Table โดยตรง