webentwicklung-frage-antwort-db.com.de

# 1062 - Doppelte Eingabe '1' für Schlüssel 'PRIMARY'

Ich bin hier völlig ratlos. 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-Site (Produktions-Site) verwende. Ich schaffe beide über phpMyadmin. Wie schon seit Monaten mache ich, wenn ich die Live-Site aktualisieren muss, die zugehörige Datenbank und importiere die Datenbank von meiner localhost-Site.

Nun, egal was ich versuche, erhalte ich 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 - Doppelte Eingabe '1' für Schlüssel 'PRIMARY' 

Ich habe versucht, eine neue leere Datenbank auf meinem localhost zu erstellen und in das gleiche Ergebnis zu importieren. Ich habe alle Tabellen und Indizes geprüft und kann dort nichts falsch finden.

Irgendwelche Vorschläge bitte, da ich bis zur Lösung dieses Problems völlig niedergeschlagen bin.

Ich lösche übrigens alle Tabellen vollständig und importiere Struktur und Daten. Das hat bis heute immer funktioniert. 

11
user2646528

sie müssen mit den Drop-Anweisungen einen Speicherauszug erstellen. Die Tabelle ist bereits vorhanden und enthält bereits Daten, und Sie versuchen, weitere Daten einzufügen, die identisch sind. Ich bin nicht zu 100% sicher auf phpmyadmin, aber die Dumps haben eine Option für "add drop table" Anweisungen 

8
exussum

Legen Sie Ihre Datenbank mit "mysqldump --insert-ignore ..." auf localhost ab und versuchen Sie, den Import mit phpmyadmin auf Ihrem Live-Computer durchzuführen.

Oder versuchen Sie, mit Befehlszeilentools eine Verbindung zu Ihrer Live-Datenbank herzustellen (konfigurieren Sie Ihre Datenbank so, dass zuerst eine Verbindung von anderen Hosts als "localhost" hergestellt werden kann!)

Dann können Sie folgendes versuchen:

$ mysql -f -p <yourdump.sql

mit -f "force" können Sie Fehler beim Import ignorieren. Es ist das gleiche wie das Hinzufügen eines "--force" Parameters zu "mysqlimport".

6
Dado

Das Problem hängt mit Ihrer Datei zusammen - Sie versuchen, eine Datenbank mit einer Kopie zu erstellen - oben in Ihrer Datei finden Sie Folgendes:

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

und ich bin mir sicher, dass Sie bereits eine Datenbank mit diesem Namen haben - IN DEM GLEICHEN SERVER - Bitte überprüfen Sie, ob Sie versuchen, sie zu überschreiben !! Ändern Sie einfach den Namen OR (besser) LÖSCHEN SIE DIESE LINIE!

3
bito_

Für mich waren die Tabellenoptionen foreign_key_checks und truncate hilfreich.

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 aus.

1
Gaalvarez

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
bollos

Ich hatte das gleiche Problem. Mein Problem war, dass ich eine Primärschlüsselspalte mit dem Namen unique_id hatte. Wenn Sie versuchen, zwei gleiche Werte in dieser Primärschlüsselspalte hinzuzufügen, wird der Fehler unten angezeigt.

enter image description hereenter image description here

Die Daten einer Primärschlüsselspalte sind alles andere als angenommen, so dass der untere 1 in 3 geändert wurde und der Fehler beseitigt wurde.

Ihr MySql ist nicht korrupt, wie in früheren Antworten und Kommentaren.

0
mattblessed