Meskipun jawaban lain cukup membantu, hanya ingin berbagi pengalaman saya juga.
Saya menghadapi masalah ketika saya telah menghapus tabel yang id
sudah 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 KEY
indeks ditetapkan setelah pembuatan ( dan penyisipan data ) yang menyebabkan masalah.
Larutan
Solusinya adalah menambahkan PRIMARY KEY
indeks pada permintaan definisi tabel untuk id
yang dirujuk sebagai kunci asing, sementara juga menghapusnya dari ALTER TABLE
bagian 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.IDFromTable1
dantable1.ID
?