Foreign Keys reparieren

Gültig ab Version:
4.0.0

Beschreibung

In bestimmten Konstellationen und auch nur bei manchen Hostern, kann es vorkommen, dass die Foreign-Keys, die Shopware in der Datenbank benötigt, verloren gehen.

Die Modelgenerierung der Attributmodels benötigt diese Keys, damit die Attribute korrekt erstellt werden können.

Dies kann zu Fehlermeldungen führen, ähnlich wie Diese:

 
[Semantical Error] line 0, col 114 near 'billing WHERE': Error: Class Shopware\Models\Attribute\CustomerBilling has no association named customerBilling in Doctrine/ORM/Query/QueryException.php on line 47
Stack trace: ...
 
 

Lösung

Gehen Sie bitte wie folgt vor.

1. Erstellen Sie ein Backup der Datenbank.

2. Laden Sie sich die Datei unter "Verfügbare Downloads" auf dieser Seite herunter.

3. Entpacken Sie die heruntergeladene Datei auf Ihrem lokalem System

4. Wählen Sie im PHPMyAdmin Ihre Shopware Datenbank aus. Auf der rechten Seite finden Sie den Reiter "Import". Über diese Funktion können Sie eine "zu importierende Datei" auswählen. Wählen Sie die heruntergeladene Datei von Ihrem lokalen Rechner aus. Bestätigen Sie diesen Vorgang mit (Okay) auf der Seite.

5. Löschen Sie nun via FTP den Cache, in dem Sie den Ordner "production_xxxx" (x = Datum des verwendeten Builds) im Ordner "var/cache" löschen.

6. Überprüfen Sie die Dateirechte der Ordner. Diese brauchen vollen Lese- und Schreibzugriff

7. Rufen Sie das Frontend in Ihrem Browser erneut auf.

Fertig

Fehlerbehandlung

...CONSTRAINT FAILED... FOREIGN KEY (`basketID`)...

Falls Sie beim Ausführen der SQL Datei eine Ähnliche Fehlermeldung wie diese erhalten:

 
MySQL meldet:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`result 2 when explaining filename '#CONSTRAINT `*******cc_ibfk_1` FOREIGN KEY (`basketID`) REFERENCES `s_order_basket` (`id`) ON DELETE CASCADE ON UPDATE )
 

befinden sich korrupte Daten in der Datenbank.

Diese Können Sie mit folgendem Statement entfernen. Führen Sie das Statement in phpMyAdmin aus:

 
DELETE FROM s_order_basket_attributes  WHERE basketID NOT IN (
    SELECT id FROM s_order_basket
);
 

Starten Sie nun wieder bei Schritt 4 und führen Sie die SQL Datei erneut aus.

...CONSTRAINT FAILED... FOREIGN KEY (`categoryID`)...

 
MySql meldet:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`****`.`#sql-ac5_2d164`, CONSTRAINT `#sql-ac5_2d164_ibfk_1` FOREIGN KEY (`categoryID`) REFERENCES `s_categories` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION) 
 

befinden sich korrupte Daten in der Datenbank.

Diese Können Sie mit folgendem Statement entfernen. Führen Sie das Statement in phpMyAdmin aus:

 
DELETE ca -- SELECT ca.*
FROM `s_categories_attributes` ca 
LEFT JOIN s_categories c
ON c.id = ca.categoryID 
WHERE c.id IS NULL
 

Achtung: Wenn Sie die Meldungen bei einer anderen Tabelle bekommen, müssen Sie das Query anpassen. Beispiel:

 
DELETE ca -- SELECT ca.*
FROM `s_MY_TABLE_attributes` ca 
LEFT JOIN s_MY_TABLE c
ON c.id = ca.categoryID 
WHERE c.id IS NULL
 

...CONSTRAINED FAILED... FOREIGN KEY ('articleID')...

 
mySql meldet:
 
#1452 - Cannot add or update a child row:
a foreign key constraint fails
(`xxxxxx`.`xxxxxxxxxx`,
CONSTRAINT `#xxxxxxxxxxxx`
FOREIGN KEY (`articleID`)
REFERENCES `s_articles` (`id`)
ON DELETE CASCADE ON UPDATE NO ACTION) 
 

Lösung:

 
DELETE ca -- SELECT ca.*
FROM `s_articles_attributes` ca 
LEFT JOIN s_articles c
ON c.id = ca.articleID 
WHERE c.id IS NULL   
 

Verfügbare Downloads:

Download Foreign Keys bis 5.2.13
Download Download Foreign Keys ab 5.2.13

Weitere interessante Artikel:

Umleitung aller Aufrufe auf HTTPS Domain

Allgemein: Umleitung aller Anfrage auf die jeweilige HTTPS Domain {{Achtung|'''Achtung!''' Die hier zur Verfügung gestellten Informationen wurden zum Zeitpunkt der Veröffentlichung dieses Artikels getestet, können sich zwischenzeitlich...

weiterlesen

Fehlermeldungen in Shopware debuggen

Debugging von Fehlern, die nicht im Logfile stehen Abseits vom Shopware Backend kann es auch an anderen Stellen durch vielfältige Gründe zu Fehlern kommen, die dann natürlich nicht im Logfile stehen, aber wie herausfinden, woran es jetzt...

weiterlesen

Die Shopware Bestell-Tabellen

Einleitung In diesem Artikel findest Du eine Übersicht über die Bestell-Tabellen in Shopware, die einzelnen Spalten und Foreign Keys zu anderen Tabellen. Grundsätzlich sind in Shopware die Bestellungen in den Tabellen aus dem Bereich...

weiterlesen
€ 1,00

Preise inkl. gesetzlicher
MwSt. + Versandkosten*