web-dev-qa-db-fra.com

N ° 1062 - Entrée en double '1' pour la clé 'PRIMARY'

Je suis complètement perdu ici. J'ai deux bases de données. L'une sur mon site localhost que j'utilise pour le développement et l'autre sur mon site distant que j'utilise pour mon site de production. Je gère les deux via phpMyadmin. Comme je le fais depuis des mois maintenant, lorsque je dois mettre à jour le site actif, je vide la base de données associée et importe la base de données de mon site localhost.

Maintenant, peu importe ce que j'essaie, je continue à avoir cette erreur:

Erreur Requête SQL:

--
-- Dumping data for table `oc_address_type`
--
INSERT INTO  `oc_address_type` (  `address_type_id` ,  `address_type_name` ) 
VALUES ( 1,  'Billing' ) , ( 2,  'Shipping' ) ;

MySQL a dit: Documentation

N ° 1062 - Entrée en double '1' pour la clé 'PRIMARY' 

J'ai essayé de créer une nouvelle base de données vierge sur mon hôte local et d'importer dans cette base, mais avec les mêmes résultats. J'ai validé toutes les tables et tous les index et je ne trouve rien d'anormal à cet endroit.

Toutes les suggestions s'il vous plaît que je suis complètement en bas jusqu'à ce que cela soit résolu.

En passant, je supprime complètement toutes les tables et importe la structure et les données. Cela a toujours fonctionné jusqu'à aujourd'hui. 

11
user2646528

vous devez vider avec les instructions de dépôt. La table existe déjà et contient déjà des données et vous essayez d’en insérer d’autres qui sont identiques. Je ne suis pas sûr à 100% sur phpmyadmin, mais les sauvegardes auront une option pour les déclarations "add drop table" 

8
exussum

Videz votre base de données sur localhost avec "mysqldump --insert-ignore ..." puis essayez d'importer avec phpmyadmin sur votre machine en direct.

Ou essayez de vous connecter à votre base de données en direct avec des outils de ligne de commande (configurez votre base de données pour pouvoir vous connecter à partir d'autres hôtes que "localhost"!)

Ensuite, vous pouvez essayer de suivre:

$ mysql -f -p <yourdump.sql

avec -f "force", vous pouvez ignorer les erreurs lors de l'importation. Cela revient à ajouter le paramètre "--force" à "mysqlimport".

6
Dado

Le problème est lié à votre fichier - vous essayez de créer une base de données avec une copie - vous trouverez quelque chose comme ceci en haut de votre fichier:

CREATE DATABASE SI PAS EXISTE * THE_NAME_OF_YOUR_DB * DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci; USE * THE_NAME_OF_YOUR_DB *;

et je suis sûr que vous avez déjà une base de données portant ce nom - IN THE SAME SERVER - veuillez vérifier, car vous essayez de remplacer !! Il suffit de changer le nom OR (mieux) EFFACER CETTE LIGNE!

3
bito_

Pour moi, les options foreign_key_checks et tronquer une table étaient utiles.

SET foreign_key_checks = 0;
TRUNCATE `oc_address_type`;
SET foreign_key_checks = 1;

Exécutez le script SQL ci-dessus, et après l'importation.

1
Gaalvarez

vous devez supprimer toutes les tables précédentes que vous écrasez. Si vous effectuez une restauration complète de toutes les tables, supprimez toutes les tables existantes.

0
bollos

J'ai eu le même problème, mon problème était que j'avais une colonne de clé primaire appelée unique_id et lorsque vous essayez d'ajouter deux valeurs identiques dans cette colonne à clé primaire, l'erreur suivante apparaît.

enter image description hereenter image description here

Les données d'une colonne de clé primaire sont toutes supposées être différentes, de sorte que 1 inférieur est passé à 3 et que l'erreur a disparu.

Votre MySql n'est pas corrompu, comme les réponses et les commentaires précédents.

0
mattblessed