2013-08-02 16 views
7

Ich bin hier völlig am Ende. Ich habe zwei Datenbanken. Eine auf meiner Localhost-Site, die ich für die Entwicklung verwende und eine auf meiner Remote-Site, die ich für meine Live- (Produktions-) Site verwende. Ich verwalte beide über phpMyadmin. Wie ich es schon seit Monaten mache, wenn ich die Live-Site aktualisieren muss, lösche ich die zugehörige Datenbank und importiere die Datenbank von meiner Localhost-Site.# 1062 - Doppelter Eintrag '1' für Schlüssel 'PRIMARY'

Nun, egal, was ich versuche, ich erhalte immer diese Fehlermeldung:

Fehler SQL-Abfrage:

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

MySQL sagte: Dokumentation

#1062 - Duplicate entry '1' for key 'PRIMARY'

Ich habe versucht, eine neue zu schaffen leere Datenbank auf meinem localhost und importieren in das aber gleiche Ergebnisse. Ich habe alle Tabellen und Indizes validiert und kann dort nichts falsch finden.

Irgendwelche Vorschläge bitte da ich komplett down bin bis das gelöst ist.

Übrigens, ich lasse alle Tabellen komplett fallen und importiere Struktur und Daten. Das hat immer bis heute funktioniert.

+0

Code als Code formatieren - jede Zeile mit vier Leerzeichen voranstellen. – Artemix

Antwort

4

müssen Sie mit den Drop-Anweisungen dump. Die Tabelle existiert und hat bereits Daten und Sie versuchen, mehr einzufügen, was identisch ist. Ich bin nicht 100% sicher auf phpmyadmin, aber die Dumps haben eine Option für "Drop Tabelle hinzufügen" -Anweisungen

+0

Nun, ein weiteres neues Problem. Ich beginne zu denken, dass meine Mysql-Installation korrupt geworden ist. Ich überprüfte, dass ich tatsächlich vorhandene Daten löschte und Tabellen fallen ließ, aber wie ich bereits erwähnte, versuchte ich erfolglos, in eine brandneue Datenbank zu importieren. Ich habe es noch einmal versucht und es schien zu funktionieren. Ich habe keine Fehlermeldung erhalten, aber als ich zur neuen Datenbank ging, hatte sie keine Tabellen mehr. – user2646528

+0

Eigentlich habe ich die Tabellen gelöscht und neu erstellt und sehe immer noch diesen Fehler. –

+0

Ich hatte dieses Problem und beim Exportieren der SQL klicken Sie auf "Benutzerdefiniert", scrollen Sie nach unten und klicken Sie auf Add DROP TABLE/TRIGGER-Anweisung. Das hat für mich funktioniert. – gavin

3

Das Problem hängt mit Ihrer Datei - Sie versuchen, eine DB mit einer Kopie erstellen - am Anfang der Datei Sie werden so etwas finden:

CREATE DATABASE WENN NICHT EXISTIERT * THE_NAME_OF_YOUR_DB * DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci; USE * THE_NAME_OF_YOUR_DB *;

und ich bin sicher, dass Sie bereits eine DB mit diesem Namen haben - IM GLEICHEN SERVER - bitte überprüfen, weil Sie versuchen, zu überschreiben !! Ändern Sie einfach den Namen ODER (besser) LÖSCHEN SIE DIESE LINIE!

+0

+1 für Ihren Kommentar. Es hat für mich funktioniert. Ich hatte Datenbank von anderer Person, also hatte ich es nicht selbst exportiert, aber arbeitete nicht. Als ich diese Zeile kommentiert habe, hat es funktioniert. – rashidkhan

5

Dump Ihre Datenbank auf localhost mit "mysqldump --insert-ignore ..." dann versuchen Sie mit phpmyadmin auf Ihrem Live-Rechner zu importieren.

$: Nach

Oder versuchen Sie Ihre Live-Datenbank mit Kommandozeilen-Tools (konfigurieren Sie Ihre Datenbank von anderen Hosts als „localhost“ zuerst in der Lage sein zu verbinden!) Verbinden

Dann können Sie versuchen, mysql -f -p < yourdump.sql

mit -f "force" können Sie Fehler beim Importieren ignorieren. Es entspricht dem Hinzufügen des Parameters "--force" zu "mysqlimport".

+1

+1 für Force-Option. Hat mich beim Versuch, Daten in eine leere Datenbank einzufügen, gespeichert. – AWippler

0

Ich hatte das gleiche Problem, mein Problem war ich hatte eine Primärschlüsselspalte namens unique_id und wenn Sie versuchen, zwei der gleichen Wert in dieser Primärschlüssel Spalte hinzuzufügen, kommt es mit dem Fehler unten zurück.

enter image description here enter image description here

ein primärer Daten des Schlüsselspalts nähme alles anders zu sein, so dass untere 1 ich weg 3 und der Fehler ging geändert.

Ihre MySql ist nicht korrupt, wie vorherige Antworten und Kommentare.

0

Sie müssen alle vorherigen Tabellen löschen, die Sie überschreiben. Wenn Sie eine vollständige Wiederherstellung aller Tabellen durchführen, löschen Sie alle vorhandenen Tabellen.

0

Für mich waren die Optionen foreign_key_checks und truncate table nützlich.

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

Führen Sie das obige SQL-Skript und nach dem Import.

Verwandte Themen