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 KEY
Index 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 KEY
Index für die Tabellendefinitionsabfrage für den id
Schlüssel hinzuzufügen, auf den als Fremdschlüssel verwiesen wurde, und ihn gleichzeitig aus dem ALTER TABLE
Teil 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.IDFromTable1
undtable1.ID
?