Erreur MySQL 1062 : créer une solution sans perte de données
Dans le domaine de MySQL, vous rencontrez l'erreur 1062 : "Entrée en double '0 ' pour la clé 'PRIMAIRE'". Cela se produit lorsque l'on tente de modifier la clé primaire d'une table tout en préservant les relations de clé étrangère et l'intégrité des données. Pour approfondir cette question, examinons le cas présenté.
La requête fournie vise à modifier la table momento_distribution en ajoutant une nouvelle colonne id comme clé primaire tout en conservant ses relations existantes. Cependant, la requête échoue en raison d'entrées en double dans la nouvelle clé primaire.
L'analyse révèle que la colonne id nouvellement créée contient la valeur « 0 » dans toutes ses lignes. Comme une clé primaire doit contenir des valeurs uniques, cette duplication devient un obstacle. Pour surmonter ce problème, nous devons configurer la colonne id comme incrémentation automatique, garantissant ainsi la génération automatique de valeurs uniques.
Requête révisée pour une exécution transparente :
< pre>
CREATE TABLE momento_distribution
(
`id` INT(11) NOT NULL AUTO_INCREMENT, `momento_id` INT(11) NOT NULL, `momento_idmember` INT(11) NOT NULL, `created_at` DATETIME DEFAULT NULL, `updated_at` DATETIME DEFAULT NULL, `unread` TINYINT(1) DEFAULT '1', `accepted` VARCHAR(10) NOT NULL DEFAULT 'pending', `ext_member` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`momento_id`, `momento_idmember`), KEY `momento_distribution_FI_2` (`momento_idmember`), KEY `accepted` (`accepted`, `ext_member`)
)
ENGINE=InnoDB
DEFAULT CHARSET=latin1;
Alternativement, si vous avez déjà une colonne id avec des valeurs , essayer ceci :
<br>ALTER TABLE momento_distribution<br> CHANGER COLUMN id id INT(11) NOT NULL AUTO_INCREMENT,<br> DROP PRIMARY KEY,<br> ADD PRIMARY KEY (id);<br>
Avec ces modifications, MySQL attribuera automatiquement des valeurs uniques à la nouvelle clé primaire, résolvant ainsi le problème de duplication. La structure de votre table sera ajustée en conséquence, protégeant vos données et garantissant l'intégrité de votre base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!