Vous avez rencontré une erreur en essayant de modifier la clé primaire de la table momento_distribution dans MySQL. Le message d'erreur "1062 - Entrée en double '0' pour la clé 'PRIMARY'" indique que la nouvelle colonne de clé primaire contient des valeurs en double.
Après examen, vous avez découvert que la nouvelle colonne créée La colonne id a la valeur « 0 » dans toutes les lignes. Ce conflit empêche l'attribution d'une clé primaire unique en raison de la présence d'enregistrements en double.
Pour résoudre ce problème, vous devez vous assurer que la colonne de clé primaire contient des valeurs uniques. L'approche la plus courante consiste à incrémenter automatiquement la colonne, ce qui générera automatiquement des valeurs uniques pour chaque nouvelle ligne.
Modifier la création de table :
CREATE TABLE `momento_distribution` ( `momento_id` INT(11) NOT NULL AUTO_INCREMENT, `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$$
Modifier le tableau existant :
ALTER TABLE `momento_distribution` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT, DROP PRIMARY KEY, ADD PRIMARY KEY (`id`);
Remarque : Cela suppose que la colonne id existe déjà. Si ce n'est pas le cas, vous devrez le créer à l'aide de l'instruction ALTER.
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!