Maison > base de données > tutoriel mysql > Comment résoudre l'erreur MySQL 1062 : entrée en double « 0 » pour la clé « PRIMARY » sans perte de données ?

Comment résoudre l'erreur MySQL 1062 : entrée en double « 0 » pour la clé « PRIMARY » sans perte de données ?

Linda Hamilton
Libérer: 2025-01-04 13:59:41
original
650 Les gens l'ont consulté

How to Solve MySQL Error 1062: Duplicate Entry '0' for Key 'PRIMARY' Without Data Loss?

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`)
Copier après la connexion

)
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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal