แม้ว่าคำตอบอื่น ๆ นั้นค่อนข้างมีประโยชน์ แต่ก็อยากแบ่งปันประสบการณ์ของฉันเช่นกัน
ฉันประสบปัญหาเมื่อฉันลบตารางที่id
ถูกอ้างอิงเป็นคีย์ต่างประเทศในตารางอื่น ๆ ( พร้อมข้อมูล ) แล้วพยายามสร้าง / นำเข้าตารางใหม่ด้วยคอลัมน์เพิ่มเติมบางส่วน
แบบสอบถามเพื่อการพักผ่อนหย่อนใจ (สร้างขึ้นใน phpMyAdmin) ดูเหมือนว่าต่อไปนี้:
CREATE TABLE `the_table` (
`id` int(11) NOT NULL, /* No PRIMARY KEY index */
`name` varchar(255) NOT NULL,
`name_fa` varchar(255) NOT NULL,
`name_pa` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
... /* SOME DATA DUMP OPERATION */
ALTER TABLE `the_table`
ADD PRIMARY KEY (`id`), /* PRIMARY KEY INDEX */
ADD UNIQUE KEY `uk_acu_donor_name` (`name`);
ดังที่คุณอาจสังเกตเห็นPRIMARY KEY
ดัชนีถูกตั้งค่าหลังจากการสร้าง ( และการแทรกข้อมูล ) ซึ่งทำให้เกิดปัญหา
สารละลาย
วิธีการแก้ไขคือการเพิ่มPRIMARY KEY
ดัชนีในแบบสอบถามคำจำกัดความของตารางสำหรับสิ่งid
ที่ถูกอ้างอิงเป็น foreign key ในขณะที่ลบออกจากALTER TABLE
ส่วนที่ดัชนีถูกตั้งค่า:
CREATE TABLE `the_table` (
`id` int(11) NOT NULL PRIMARY KEY, /* <<== PRIMARY KEY INDEX ON CREATION */
`name` varchar(255) NOT NULL,
`name_fa` varchar(255) NOT NULL,
`name_pa` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
table2.IDFromTable1
และtable1.ID
?