Was verursacht diesen Fehler?

Hallo,

ich bekomme seit einigen Tagen diese Fehlermeldung per Email:

exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '185-38' for key 'PRIMARY'' in /var/www/vhosts/domain.de/swverzeichnis/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:987

Ich habe bei Google zwar einige Einträge dazu gefunden, allerdings in engl. sprachigen Foren und ich verstehe überhaupt nichts. Vermutlich benötige ich auch die deutsche Erklärung für Dummies.

Kann man anhand dieser Meldung bereits etwas sagen oder muss ich die gesamte Email posten?

Edit: Habe jetzt noch eine zweite Meldung in der gleichen Mail gefunden

Next exception 'Doctrine\DBAL\DBALException' with message 'An exception occurred while executing 'INSERT INTO s_filter_articles (articleID, valueID) VALUES (?, ?)' with params [185, 38]:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '185-38' for key 'PRIMARY'' in /var/www/vhosts/domain.de/swverzeichnis/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php:119
Stack trace:

 

und ganz am Ende dann:

core
{
    "uri": "/backend/Article/setPropertyList/targetField/properties?_dc=1454518431538&propertyGroupId=1&articleId=185",
    "method": "POST",
    "query": {
        "_dc": "1454518431538",
        "propertyGroupId": "1",
        "articleId": "185",
        "module": "backend",
        "controller": "Article",
        "action": "setPropertyList",
        "targetField": "properties"
    },
    "post": {
        "properties": [
            {
                "id": 2,
                "name": "Größe",
                "value": [
                    {
                        "id": 38,
                        "value": "10 x 15 cm"
                    }
                ]
            },
            {
                "id": 4,
                "name": "Verfahren",
                "value": [
                    {
                        "id": 33,
                        "value": "Licht"
                    }
                ]
            }
        ]
    }
}

Das gehört auf jeden Fall zu den von mir angelegten Eigenschaften. Hier wurde auch nichts verändert in den letzten Tagen.

Ich habe vor Wochen die Artikelvorlagen mit den Eigenschaften angelegt und bin nun dabei, diese zu duplizieren und mit den eigentlichen Artikeldaten zu füllen (Eigenschaften sind bereits in der Vorlage enthalten)

 

LG

Ich weiß ja nicht was du vorhast, machst und wie du genau duplizierst…
Vielleicht erstmal die Frage ob dein Vorgehen überhaupt das beste ist. Evtl. gibt es ja einen geschickteren Weg das umzusetzen.

Die Fehlermeldung sagt aus, dass eine Id die angelegt werden soll schon vergeben ist.
Eine ID ist ein Identifikator mit dem eindeutig identifiziert werden kann (Praxis VS Theorie - siehe EAN). In der Datenbank werden einzelne Datensätze mit IDs vershen damit sie eindeutig sind (wenn z.B. zwei Kunden Hans Müller heißen, dann weiß man anhand der ID wer welcher Hans ist). Der primary key (Primärschlüssel) ist i.d.R. dafür zuständig. Der darf dann also einfach nicht doppelt vergeben werden bzw. vorhanden sein.

Es ist so, dass ich ca. 200 Artikel habe, die auf einer Vorlage basieren. D.h. die Eigenschaften und Varianten sind identisch. Also speichere ich eine Vorlage XY in dem Verzeichnis, in dem die Artikel auch erscheinen sollen, damit ich nicht jedesmal die Kategorie auswählen muss. Nun rufe ich den Artikel auf, klicke oben duplizieren, gebe ArtikelNr, Beschreibung etc ein, füge Bild ein und generiere die Varianten. Dann wieder von vorne mit dem nächsten Artikel.

Grundsätzlich ist das ganze deshalb mühsam, weil jeder Klick einige Sekunden braucht, bis was passiert. Deshalb habe ich gestern die Vorlage geöffnet, dupliziert, dann wieder dupliziert usw. bis ich 5 Fenster offen hatte. Die hab ich dann nacheinander gefüllt. In der Übersicht wurden sie jedoch alle korrekt mit einer eigenen ID angezeigt.

Was mir auch schon passiert ist - finde ich wirklich blöd, dass sowas überhaupt möglich ist: Ich rufe einen Artikel auf, der überarbeitet werden soll. Werde vom Tagesgeschäft unterbrochen und mache etwas später weiter, indem ich den Artikel öffne, bearbeite, speichre. Später merke ich dann, dass das im ersten Anlauf geöffnete Fenster noch offen war. Dieses schließe ich dann ohne speichern.

Vielleicht kanns damit zusammen hängen?

 

Hi,

in der Tabelle s_filter_articles speichert Shopware, welche Artikel welche Eigenschaften-Werte haben. Der Fehler sagt ja, dass “185-38” doppelt vor kommt - der Artikel mit der ID 185 hat also bereits eine Eigenschaft mit der ID 28 (bei dir  der Wert “10 x 15 cm” für die Option “Größe”).

So wie du das schilderst, könnte das ein SW-Fehler beim Duplizieren sein oder eine falsche manuelle Eingabe? Das kann ich schwer einschätzen. 

Daniel

Hallo, ich hab jetzt die Tabelle angeschaut. Es gibt da ja nur die articlID und die valueID.

Für Artikel 185 gibt es zwei Einträge: valueID 33 und 38

Das müsste dann wohl richtig sein. Wenn ich das richtig verstehe, wurde die Fehlermeldung ausgelöst, weil VERSUCHT wurde, zweimal die 38 anzulegen, was jedoch nicht möglich ist. Es wurde also sonst kein Schaden angerichtet?

Nein, wahrscheinlich nicht!