mysql-logo
ถ้าหากทำการรัน query บน table ที่มีจำนวน row มากมายมหาศาลบน InnoDB storage engine และได้ error

ERROR 1206 (HY000): The total number of locks exceeds the lock table size

สาเหตุ ERROR 1206 ช้างบน หมายถึง MySQL ไม่มีเนื้อที่เหลือพอที่จะสามารถเก็บทุก row lock ที่จะใช้ในการ execute บน query ที่จะรันได้

การแก้ไข ทำการเพิ่ม innodb_buffer_pool_size ให้มีขนาดใหญ่กว่าเดิม (default 8MB) และ restart MySQL

การแก้ไขเฉพาะหน้า ให้ทำการกำหนดจำนวน row ที่จะถูก query ลง ตัวอย่างเช่น ถ้าหากต้องการลบข้อมูล 500,000 row จาก table หนึ่งแล้วเกิด “ERROR 1206 (HY000): The total number of locks exceeds the lock table size” ขึ้น ให้ทำการลดจำนวน row ที่จะ query ลง เช่น ลบข้อมูลทีละ 10,000 row แทน แต่ถ้าเป็นการ insert ให้ทำการ insert ในครั้งเดียว