jschm Posted July 17, 2017 Share Posted July 17, 2017 (edited) Hi zusammen, ich betreibe einen Presta 1.6.1.12 Shop. Der Shop ist komplett eingerichtet und live, Demodaten habe ich alle vor dem Live-Gang gelöscht. Unter "Erweiterte Einstellungen - Leistung" sind alle Caches deaktiviert. Gestern kam die erste Bestellung rein. Es wurde 1 Artikel bestellt, auf der Bestellbestätigung an den Kunden wurden jedoch 4 Artikel aufgelistet, 2 davon waren Demoprodukte, berechnet wurde nur der eine reale Artikel. Wenn ich im Backend in der Bestellübersicht die Bestellung öffne und einen Demoartikel anklicke kommt "Objekt kann nicht geladen werden (nicht gefunden)" Auch auf der 2. Bestellung waren wieder 3 Demoprodukte vorhanden! Es gab außerdem auch eine dritte Bestellung, ohne Demodaten. So, wie gesagt sind die Demo-Produkte nicht mehr im Shop existent, warum erscheinen die in der Bestellbestätigung beim Kunden?? Bin echt ratlos, und da der Shop live ist, ist das ganze sehr unpraktisch. Danke für jeden Tipp! Edited July 17, 2017 by jschm (see edit history) Link to comment Share on other sites More sharing options...
rictools Posted July 17, 2017 Share Posted July 17, 2017 Demodaten habe ich alle vor dem Live-Gang gelöscht. Wie? Link to comment Share on other sites More sharing options...
rictools Posted July 18, 2017 Share Posted July 18, 2017 Da du dich nicht mehr meldest, nehme ich an, daß das Problem gelöst ist? Vielleicht kannst du dann ja dem Forum kurz mitteilen wie. Link to comment Share on other sites More sharing options...
Scully Posted July 19, 2017 Share Posted July 19, 2017 Das beschriebene Problem ist ein typisches Problem, wenn man Daten aus Tests nur unvollständig in der Datenbank löscht. Vielfach geht man davon aus, dass man für die Bestellungen einfach nur ps_orders löscht. Das reicht bei weitem nicht, da dort z.B. nur die Basisdaten einer Bestellung gespeichert sind. Es gibt viele weitere Tabellen, wo dann die Warenkörbe, Produktedetails, Steuern, Rechnungen, Lieferscheine etc. gespeichert sind. Wenn man unvollständig löscht, passiert technisch folgendes: Prestashop vergibt eine neue Bestellnummer (id_order) und schreibt die Daten in die Bestelltabelle ps_orders. Dann lädt PS den Warenkorb mit der zubehörigen ID. Wenn es diesen früher schon mal gegeben hat, liegen da schon die ersten Leichen rum. Dann versucht PS, die Details in allen weiteren Tabellen ebenfalls nachzutragen. Gibt es dann diese Bestell-ID, die Artikel ID oder die Kunden/Adress-ID dort schon, schlägt der Insert natürlich fehlt. Ergebnis: man hat einen lustigen Mix von alten Demo- und neuen Live-Daten. Link to comment Share on other sites More sharing options...
jschm Posted July 21, 2017 Author Share Posted July 21, 2017 Danke für die Infos! In der Tat habe ich einfach manuell im Backend alle Artikel gelöscht. Mir war nicht bewusst, dass dies nicht ausreicht. Wie muss ich denn jetzt vorgehen, kann ich die restlichen Demo-Einträge manuell über myPHP löschen? Viele Grüße Jan Link to comment Share on other sites More sharing options...
Scully Posted July 21, 2017 Share Posted July 21, 2017 Das kostenlose Modul Prestashop Cleaner bietet Hilfe. Link to comment Share on other sites More sharing options...
jschm Posted July 21, 2017 Author Share Posted July 21, 2017 Das kostenlose Modul Prestashop Cleaner bietet Hilfe. Danke für den Tipp, wenn ich die Warnungen im Modul richtig verstehe, löscht mir das aber alle (!) Daten (Katalog, Bestellungen, etc.), nicht nur die Demo Daten? Wenn dem so is, würde mir das leider nicht helfen, der Shop ist im Live Betrieb und ich habe alle Daten manuell eingetragen Welche Möglichkeiten gäbe es denn noch? Notfalls auch komplett manuell wenn ich die Stellen in der DB kennen würde in der sich Demo-Daten verstecken Link to comment Share on other sites More sharing options...
rictools Posted July 22, 2017 Share Posted July 22, 2017 In der Tat habe ich einfach manuell im Backend alle Artikel gelöscht. Zunächst hattest du geschrieben, du hättest die "Demodaten" gelöscht, jetzt sprichst du nur von den Artikeln. Die Demobestellungen und evtl. weiteres hast du nicht gelöscht? Link to comment Share on other sites More sharing options...
jschm Posted July 22, 2017 Author Share Posted July 22, 2017 OK etwas präziser: Ich habe alles was ich von den Demo-Daten gefunden habe manuell (!) gelöscht und den Demo-Modus deaktiviert (auf "Übersicht"). Dazu zählen Bestellungen, Artikel und was ich sonst gefunden habe. Dachte das reicht, und ich hatte nicht erwartet das die dann, obwohl gelöscht, noch in Bestellungen einlaufen. Link to comment Share on other sites More sharing options...
rictools Posted July 22, 2017 Share Posted July 22, 2017 (edited) Wie hast du die Bestellungen gelöscht? Wie definierst du "manuell" (man kann mit der Hand schlecht im Computer rumwerkeln ...)? Edited July 22, 2017 by rictools (see edit history) Link to comment Share on other sites More sharing options...
Scully Posted July 22, 2017 Share Posted July 22, 2017 In diesem Fall muss man leider alle relevanten DB-Tabellen manuell durchforsten und diejenigen Rows löschen, welche zu Testaufträgen gehören. Es sind leider recht viele Tabellen, die mit Auftragsdaten verbunden sind. Alternativ nur ps_orders und ps_cart manuell bereinigen und dann mittels Cleaner Modul eine Konsistenz - Bereinigung (Dritte Option) ausführen. Vorher einen Backup machen! Link to comment Share on other sites More sharing options...
Scully Posted July 22, 2017 Share Posted July 22, 2017 Und vielleicht noch den Hinweis: Deine Daten sind nach unserem Kenntnisstand heute nicht mehr konsistent, da Test und Realdaten gemischt wurden. Mein Vorschlag kann dieses Ausmass für künftige Bestellungen eliminieren, jedoch heute schon falsche Daten nicht mehr rückwirkend reparieren. Das könnte man nur manuell und mit sehr viel Wissen zum Datenmodell machen. Normal nutzt man halt den PS Cleaner, BEVOR man produktiv startet. Link to comment Share on other sites More sharing options...
rictools Posted July 22, 2017 Share Posted July 22, 2017 Ich denke, wenn man nicht falsch löscht, sind noch vorhandene Demodaten nicht wirklich ein Problem, sofern man nicht wirklich den Shop als alleinige Quelle für Steuererklärungen etc. nutzt. Es gelingt mir halt nur nicht rauszubekommen, was er denn nun wirklich wie gelöscht hat, so kann man in der Grundausstattung ja Bestellungen nicht im BackOffice löschen und Operationen in der Datenbank (was er vielleicht mit "manuell" meint) sind immer gefährlich (wer dann allerdings vorher kein Backup gemacht hat, ist halt selbst schuld ...) Nur, wenn da noch Reste von Demodaten im System sind, muß man die schließlich auch finden können ... Ich habe übrigens den Prestashop-Cleaner nie verwendet (gab es schon immer diese vier Auswahlmöglichkeiten?). Ich denke auch, daß es nicht die Regel ist, daß man Demodaten bereits löschen will, bevor man die ersten Kategorien anlegt oder Artikel einpflegt, da wäre eine Funktion, die wirklich nur die Demodaten löscht, erheblich besser. Link to comment Share on other sites More sharing options...
Scully Posted July 23, 2017 Share Posted July 23, 2017 Unschön ist es schon. Ich kann ja so aus Prestashop keine korrekte Rechnung für besagte Bestellungen erzeugen. Und was Kunden per Mail ggf schon bekommen haben ist wohl für die Tonne. P.S. Wir löschen immer mal direkt in der DB wenn es sein muss. Aber nur mit vorheriger Sicherung. Link to comment Share on other sites More sharing options...
Scully Posted July 23, 2017 Share Posted July 23, 2017 PPS: Cleaner hat mind. seit 1.5.6 diese Auswahl Link to comment Share on other sites More sharing options...
jschm Posted July 23, 2017 Author Share Posted July 23, 2017 (edited) Danke für eure Hilfe! Die Bestellungen habe ich über die URLs gelöscht: /index.php?tab=AdminOrders&id_order=317&deleteorder&token=b1ab3ae12ab44116bca6bf58c4f439ca einfach jede Bestellung geöffnet und entsprechend angepasst, hatte funktioniert, dachte ich. DB Backup ist selbstverständlich, habe ich. Ich schaue jetzt Mal die Tabellen ps_orders und ps_cart durch und lösche alles was mit Demo Daten zu tun hat. Die bereits getätigten Bestellungen sind natürlich "durch", ich möchte, dass es bei zukünftigen Bestellungen funktioniert EDIT Also in ps_orders sind keine Demo Bestellungen mehr enthalten, nur noch die "live" Bestellungen. In psd_cart konnte ich leider nichts finden, da ich die Felder nicht interpretieren kann, alles nur numerisch Mit dem Cleaner habe ich folgendes durchgeführt: EINSCHRÄNKUNGEN DER FUNKTIONALEN INTEGRITÄT Prüfen & Reparieren sowie DATENBANKBEREINIUNG --> Der Shop läuft und es scheint alles noch zu funktionieren, ob es das gebracht hat weiß ich allerdings nicht Die letzte Änderung vom Cleaner habe ich zwischengespeichert, die erste leider nicht Durch folgende Abfragen wurden Dateninkonsistenzen bereinigt: DELETE FROM ps_configuration WHERE id_configuration = 364 1 Zeile(n) DELETE FROM `ps_access` WHERE `id_tab` NOT IN (SELECT `id_tab` FROM `ps_tab`) 4 Zeile(n) DELETE FROM `ps_cart_product` WHERE `id_cart` NOT IN (SELECT `id_cart` FROM `ps_cart`) 341 Zeile(n) DELETE FROM `ps_category_group` WHERE `id_group` NOT IN (SELECT `id_group` FROM `ps_group`) 1 Zeile(n) DELETE FROM `ps_module_currency` WHERE `id_currency` NOT IN (SELECT `id_currency` FROM `ps_currency`) 1 Zeile(n) DELETE FROM `ps_order_carrier` WHERE `id_order` NOT IN (SELECT `id_order` FROM `ps_orders`) 2 Zeile(n) DELETE FROM `ps_order_detail` WHERE `id_order` NOT IN (SELECT `id_order` FROM `ps_orders`) 7 Zeile(n) DELETE FROM `ps_order_history` WHERE `id_order` NOT IN (SELECT `id_order` FROM `ps_orders`) 4 Zeile(n) DELETE FROM `ps_order_invoice` WHERE `id_order` NOT IN (SELECT `id_order` FROM `ps_orders`) 2 Zeile(n) DELETE FROM `ps_order_invoice_payment` WHERE `id_order` NOT IN (SELECT `id_order` FROM `ps_orders`) 2 Zeile(n) DELETE FROM `ps_product_sale` WHERE `id_product` NOT IN (SELECT `id_product` FROM `ps_product`) 5 Zeile(n) DELETE FROM `ps_search_index` WHERE `id_product` NOT IN (SELECT `id_product` FROM `ps_product`) 436 Zeile(n) DELETE FROM `ps_specific_price_priority` WHERE `id_product` NOT IN (SELECT `id_product` FROM `ps_product`) 3 Zeile(n) DELETE FROM `ps_stock_available` WHERE `id_product` NOT IN (SELECT `id_product` FROM `ps_product`) 7 Zeile(n) Edited July 23, 2017 by jschm (see edit history) Link to comment Share on other sites More sharing options...
Scully Posted July 23, 2017 Share Posted July 23, 2017 Tabelle cart kann man zur Not über das date_add Feld eruieren. Das wäre das Cart-Erstellungsdatum. Sonst: dann mach doch mal eine Test-Bestellung um zu sehen, ob die groben Fehler nicht mehr auftreten. Link to comment Share on other sites More sharing options...
rictools Posted July 24, 2017 Share Posted July 24, 2017 (edited) Unschön ist es schon. Ich kann ja so aus Prestashop keine korrekte Rechnung für besagte Bestellungen erzeugen. `Das war jetzt ein Mißverständnis, ich meinte, daß es nicht unbedingt stören muß, wenn sich noch teilweise Demo-Bestellungen oder andere Demo-Daten im Shopsystem befinden, natürlich nur, wenn diese nicht zu Fehlern bei aktuellen Bestellungen führen. Die Bestellungen habe ich über die URLs gelöscht: /index.php?tab=AdminOrders&id_order=317&deleteorder&token=b1ab3ae12ab44116bca6bf58c4f439ca einfach jede Bestellung geöffnet und entsprechend angepasst, hatte funktioniert, dachte ich. Diese Möglichkeit ist mir komplett neu, keine Ahnung ob das funktionieren kann oder nicht, ich würde ja eher vermuten, daß damit nur die Zeile im BackOffice nicht angezeigt wird und beim nächsten Mal wieder da ist. Vielleicht wurde aber tatsächlich eine unvollständige Löschung in der Datenbank dadurch ausgelöst. Interessant, wieviele Tabellen da berücksichtigt werden müssen, wenn man direkt in der Datenbank etwas sauber löschen will ... Von Haus ist aus rechtlichen Gründen ein Löschen von Bestellungen in Prestashop eigentlich nicht möglich, es gibt aber zahlreiche auch kostenlose Module dafür. Edited July 24, 2017 by rictools (see edit history) Link to comment Share on other sites More sharing options...
Scully Posted July 24, 2017 Share Posted July 24, 2017 @RIC Alles i.O. Ich kann nach Urlaub auch mal ALLE Tabellen posten, die relevant sind. Nur ps_orders und ps_cart funktioniert aber in Verbindung mit PS Cleaner Option 3 (referentielle Integrität) auch gut. Warum? Löscht man in genannten Tabellen, dann hat es überzählige Fremdindexe, zb für Produktedaten, Carrier, Steuern etc. Der PS Cleaner räumt diese überzähligen Leichen dann weg, wenn der Haupt-Tabelleneintrag dafür fehlt. Link to comment Share on other sites More sharing options...
Scully Posted July 24, 2017 Share Posted July 24, 2017 und P.S. Wir haben mehrere Installationen, bei welchen Prestashop sowohl Kunden- als auch Lieferanten-Zahlungen per Schnittstelle an FIBU-Programme liefern. Und auch Verkäufe im Ladengeschäft darüber gehen. Da achten wir penibelst auf korrekte Daten. Nur Test- Kunden mit ID 1, 2 und 3 werden da ggf. nicht übertragen. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now