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 KEY
chỉ 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 KEY
chỉ mục vào truy vấn định nghĩa bảng cho id
cái được tham chiếu là khóa ngoại, đồng thời xóa nó khỏi ALTER TABLE
phầ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.IDFromTable1
vàtable1.ID
?