วิธีแก้ Error Foreign key constraint ใน MySQL

วิธีแก้-Error-Foreign-key-constraint-is-incorrectly-formed
วิธีแก้-Error-Foreign-key-constraint-is-incorrectly-formed

วิธีแก้ Error Foreign key constraint ใน MySQL

วิธีแก้ Error Foreign key constraint is incorrectly formed
วิธีแก้ Error Foreign key constraint is incorrectly formed
สาเหตุของ error เกิดจากการที่เราพยายามที่จะสร้าง table หรือเพิ่ม row data เข้าไปในฐานข้อมูลแต่รูปแบบของข้อมูลในตารางนั้น มีบาง field ที่ถูกกำหนดให้มีความสำพันธ์กับตารางอื่นในฐานข้อมูลเดียวกัน
หรืออีกอย่างหนึ่งก็คือ ในตารางที่เราพยายามจะสร้างนั้นมีการสร้าง Foreign key ซึ่งเป็น Primary Key ของตารางอื่นที่สัมพันธ์กันอยู่ เพื่อป้องกันข้อผิดพลาด ระบบจึงแจ้ง error และไม่ทำงานคำสั่ง MySQL ที่เราเขียนไป

วิธีแก้เบื้องต้น

  • กรณีใช้ phpmyadmin ด้วยคำสั่ง MySQL Query ให้เอาติ๊กถูกที่ Enable foreign key checks ออก หรือใช้คำสั่ง MySQL

    SET FOREIGN_KEY_CHECKS=0;



    วิธีแก้-Error-Foreign-key-constraint-ใน-MySQL-1

  • กรณีใช้ phpmyadmin แบบ Import ข้อมูล ก็ให้เอาติ๊กถูกออกที่ Enable foreign key checks


    วิธีแก้-Error-Foreign-key-constraint-ใน-MySQL-2

ถ้าใช้คำสั่ง FOREIGN_KEY_CHECKS = 0; แล้วยังไม่สามารถ create table หรือ insert ข้อมูลได้ให้ลองยกเลิก FOREIGN KEY ด้วยคำสั่งด้านล่าง

ALTER TABLE tablename DROP FOREIGN KEY fieldname;

ถ้าเป็นการ import ไฟล์ .sql เข้ามาให้เปิดไฟล์และลบคำสั่ง add key ทิ้้งไปทั้งหมด ตัวอย่างตามด้านล่างคือลบคำสั่ง ADD KEY `pet_uid` (`pet_uid`) ออกไป

ALTER TABLE `expense`
  ADD PRIMARY KEY (`expense_uid`),
  ADD KEY `pet_uid` (`pet_uid`)

error นี้เกิดขึ้นเพื่อป้องกันข้อผิดพลาดของข้อมูลระหว่างตารางที่อาจจะไม่ตรงกัน เช่น การ insert ข้อมูลลงไปใน field ที่เป็น foreign key ซึ่งเป็นข้อมูลที่ไม่มีอยู่จริงในตารางที่เป็น primary key ระบบจะแจ้ง error เพื่อป้องกันไม่ให้เกิดข้อผิดพลาดของข้อมูลนั่นเองครับ