Mặc dù các câu trả lời khác khá hữu ích, nhưng chỉ muốn chia sẻ kinh nghiệm của tôi.
Tôi gặp phải vấn đề khi tôi đã xóa một bảng idđã được tham chiếu là khóa ngoại trong các bảng khác ( có dữ liệu ) và cố gắng tạo lại / nhập bảng với một số cột bổ sung.
Truy vấn để giải trí (được tạo bằng phpMyAdmin) trông giống như sau:
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`);
Như bạn có thể nhận thấy, PRIMARY KEYchỉ mục được đặt sau khi tạo ( và chèn dữ liệu ) gây ra sự cố.
Giải pháp
Giải pháp là thêm PRIMARY KEYchỉ mục vào truy vấn định nghĩa bảng cho idcái được tham chiếu là khóa ngoại, đồng thời xóa nó khỏi ALTER TABLEphần mà chỉ mục đang được đặt:
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.IDFromTable1vàtable1.ID?