Hallo, momentan betreibe ich einen Shop der auf Version 4.05 läuft da es seit dieser Version Probleme mit dem Update gibt. Folgende Fehlermeldung kam gestern: ERROR 1452 (23000) at line 204: Cannot add or update a child row: a foreign key constraint fails (usr_XXXXXXXX
.#sql-e49_10dbaa34
, CONSTRAINT #sql-e49_10dbaa34_ibfk_1
FOREIGN KEY (blog_id
) REFERENCES s_blog
(id
) ON DELETE CASCADE ON UPDATE NO ACTION) Ein deaktivieren der foreign_key Option in der Datenbank brachte leider keine Verbesserung. Wie komme ich auf eine aktuelle Version ohne meine Daten zu verlieren?
Hallo, Dass Problem ist ja einfach, dass du due defekten Einträge nur identifizieren und dann löschen musst. Danach dollte das Skript wieder durchlaufen. Vorher kann der Shop auch eigentlich nicht genutzt werden, da due Gefahr von Fehlern viel zu groß ist. Beispiel Befehl DELETE FROM s\_blog\_attributes WHERE blog\_id NOT IN ( SELECT id FROM s\_blog );
ACHTUNG: Habe das jetzt so runtergeschrieben. Bitte testen bzw. Backup anlegen Sebastian PS: so müsstest du gefahrlos fehlerhafte Einträge anzeigen lassen können SELECT \* FROM s\_blog\_attributes WHERE blog\_id NOT IN ( SELECT id FROM s\_blog );
Hallo Sebastian, das ist nicht zu 100% korrekt. Was ist mit Einträgen in der s_blog_attributes wo die blog_id NULL ist? Das hatte ich auch schon öfters. Hier ist es besser das ganze mit einem LEFT JOIN zu lösen. Anzeige: SELECT \* FROM s\_blog\_attributes sba LEFT JOIN s\_blog sb ON sba.blog\_id = sb.id WHERE sb.id IS NULL
Löschen defekter Einträge: DELETE sba.\* FROM s\_blog\_attributes sba LEFT JOIN s\_blog sb ON sba.blog\_id = sb.id WHERE sb.id IS NULL
Hi, dankend dein Feedback. Wenn ich das jetzt aber richtig im Kopf habe, dann dürfte NULL aber gar nicht vorkommen. Das wären ja Reste ohne Zuweisung, oder? Due würden eh nur als Leiche rumliegen Sebastian
[quote=„Sebastian Klöpper“]dankend dein Feedback. Wenn ich das jetzt aber richtig im Kopf habe, dann dürfte NULL aber gar nicht vorkommen. Das wären ja Reste ohne Zuweisung, oder?[/quote] Das stimmt. Dieses Verhalten hatte ich nur in älteren 4.1er und 4.0er Versionen. Lies sich leider nie vernünftig reproduzieren. [quote=„Sebastian Klöpper“] Due würden eh nur als Leiche rumliegen [/quote] Es schadet aber auch nicht diese direkt mit zu löschen Gruß
Der Vollständigkeit halber gibt es hier nun ein SQL Snippet welches alle Attribute Tabellen überprüft und ggf. bereinigt. Gruß