Meskipun jawaban lain cukup membantu, hanya ingin berbagi pengalaman saya juga.
Saya menghadapi masalah ketika saya telah menghapus tabel yang idsudah direferensikan sebagai kunci asing di tabel lain ( dengan data ) dan mencoba untuk membuat ulang / mengimpor tabel dengan beberapa kolom tambahan.
Permintaan untuk rekreasi (dibuat dalam phpMyAdmin) tampak seperti berikut:
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`);
Seperti yang Anda perhatikan, PRIMARY KEYindeks ditetapkan setelah pembuatan ( dan penyisipan data ) yang menyebabkan masalah.
Larutan
Solusinya adalah menambahkan PRIMARY KEYindeks pada permintaan definisi tabel untuk idyang dirujuk sebagai kunci asing, sementara juga menghapusnya dari ALTER TABLEbagian di mana indeks sedang ditetapkan:
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.IDFromTable1dantable1.ID?