Obwohl die anderen Antworten sehr hilfreich sind, wollte ich nur meine Erfahrungen teilen.
Ich hatte das Problem, als ich eine Tabelle gelöscht hatte id, auf die in anderen Tabellen ( mit Daten ) bereits als Fremdschlüssel verwiesen wurde, und versuchte, die Tabelle mit einigen zusätzlichen Spalten neu zu erstellen / zu importieren.
Die Abfrage für die Neuerstellung (generiert in phpMyAdmin) sah folgendermaßen aus:
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`);
Wie Sie vielleicht bemerken, wurde der PRIMARY KEYIndex nach der Erstellung ( und dem Einfügen von Daten) festgelegt ) festgelegt, die das Problem verursacht hat.
Lösung
Die Lösung bestand darin, den PRIMARY KEYIndex für die Tabellendefinitionsabfrage für den idSchlüssel hinzuzufügen, auf den als Fremdschlüssel verwiesen wurde, und ihn gleichzeitig aus dem ALTER TABLETeil zu entfernen, in dem die Indizes festgelegt wurden:
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.IDFromTable1undtable1.ID?