Bien que les autres réponses soient très utiles, je voulais simplement partager mon expérience également.
J'ai rencontré le problème lorsque j'ai supprimé une table dont la id
référence était déjà en tant que clé étrangère dans d'autres tables ( avec des données ) et essayé de recréer / importer la table avec des colonnes supplémentaires.
La requête de récréation (générée dans phpMyAdmin) ressemblait à ceci:
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`);
Comme vous pouvez le remarquer, l' PRIMARY KEY
index a été défini après la création ( et l'insertion des données ) qui causait le problème.
Solution
La solution consistait à ajouter l' PRIMARY KEY
index sur la requête de définition de table pour le id
qui était référencé en tant que clé étrangère, tout en le supprimant également de la ALTER TABLE
partie où les index étaient définis:
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
ettable1.ID
?