Ich habe nach dem letzten Shopware Update (auf die Verison 6.6.2.0) das Problem, dass sich Aritkel nicht mehr in den Warenkorb legen lassen.
In der Console wird ein JS Fehler geloggt:
plugin_header_search-widget_plugin_js.js:1
POST /checkout/line-item/add 500 (Internal Server Error)
Und in den Logs finde ich folgende Fehlermeldung die auf ein Problem in der Datenbank hinweist:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (datenbank.cart, CONSTRAINT fk.cart.country_id FOREIGN KEY (country_id) REFERENCES country (id) ON DELETE CASCADE ON UPDATE CASCADE)" at ExceptionConverter.php line 56
Hat hier jemand eine Idee wie ich das Problem beheben kann? Ich hatte bereits in die DB geschaut und dort scheinen die Tabellen sowie die Country ID Werte in Ordnung.
Danke für deine schnelle Rückmeldung!
Der SQL Log wird aktuell noch nicht geschrieben. Ich bin hinterher, dass dieser vom Hoster aktiviert wird.
Cache im Browser sowie vom Shop ist gelöscht.
Hast du noch weitere Ideen oder müssen wir erstmal die Logs abwarten?
Nur die cart Tabelle. Country wäre nicht so ratsam
Du hast aber nicht zwischenzeitlich Datensätze aus der country Tabelle gelöscht oder?
Der Fehler hört sich für mich danach an, dass in in der Spalte country_id eine ID geschrieben wird, die in der Tabelle country nicht mehr existent ist.
Deswegen noch mal die Frage
Ich habe nur die Datensätze in der Tabelle Cart gelöscht. Die Tabelle Country hatte ich nicht angefasst. Bevor ich das gemacht habe, hatte ich die IDs zwischen den beiden Tabellen verglichen. Da waren die IDs in der Tabelle Cart so in der Tabelle Country zu finden - also soweit so gut.
Welche ID jetzt beim in den Warenkorb legen geschrieben wird bekommt man nur mit den SQL Logs heraus? Oder gibt es hier noch eine andere Möglichkeit?
Das habe ich jetzt auch einmal geprüft. Leider stehen die relevanten Daten nicht dabei.
Der Hoster kann scheinbar nicht die SQL Logs aktivieren. Ich hoffe noch darauf, dass dieser mir zumindest einen Ausschnitt davon zusenden kann.
Hat jemand noch andere Ideen? Kann man die country Tabelle ggf. einmal neu befüllen?
Theoretisch ja, aber die IDs werden zufällig erstellt, das würde Dir nicht helfen, sondern noch mehr Probleme verursachen. Hast Du ein Backup der DB von vor dem Update? Kannst Du in der DB mal folgendes abfragen?
SELECT count(*) FROM country;
Bei meiner Testinstallation (6.6.2.0) kommt da 250 raus.
Okay, verstehe.
Wenn ich die SQL ausführe kommt auch 250 heraus.
Was mir gerade noch einfällt: bei dem Update hatte ich anfangs auch Probleme mit Paypal. Ich musste erst einmal Paypal deaktivieren/aktivieren und auch das Plugin einmal komplett überschreiben. Danach ging es erst wieder. Aktuell habe ich aber das Paypal Plugin vollständig deaktiviert. Daher gehe ich nicht davon aus das es hiermit was zu tun haben könnte.
Habe eben mal geschaut, in meinem 6.5.8.7 gibt es den foreign key fk.cart.country_id noch, im 6.6.2.0 nicht mehr. Anscheinend wurde der nicht entfernt…
denn da sind noch andere Foreign keys (currency_id, customer_id usw.), die vermutlich auch Probleme machen. Schau Dir mal die vendor/shopware/core/Migration/V6_6/Migration1707064042CartRemoveFK.php an, da sind alle Felder und Foreign Keys aufgeführt, die entfernt wurden. Anscheinend wurde die bei Dir nicht ausgeführt.
@Anotherone mega, ich danke dir! Das war tatsächlich der Fehler. Warum auch immer die Änderungen an der DB Tabelle nicht gemacht wurden…
Das löschen und neu erstellen der cart Tabelle hat aber geholfen. Tausend Dank!