Anfängerfrage: Datenbank Kopieren

Kopernikus

Benutzer
Beiträge
7
Hallo zusammen

Ich bin noch blutiger MySql Anfänger, bastle aber gerne mal an einem Internetshop. Ich suche aktuell eine Lösung um diverse Daten von einer Datenbank in die andere (gleiche Struktur, aber leer) zu transferieren. Leider wollten bis jetzt sämtliche Versuche nicht gelingen.

Der Shop Hersteller (Shopware) hat einen Code zur Verfügung gestellt, welcher sämtliche Kunden aus der Datenbank löscht. Diesen Code würde ich gerne für meine Bedürfnisse umbauen. Hier mal der Code zum Löschen aller Kunden:

delete cwp.*, cw.*, ct.*, cr.*, ca.*, c.* from customer c left join customer_address ca on c.id = ca.customer_id left join customer_recovery cr on c.id = cr.customer_id left join customer_tag ct ON c.id = ct.customer_id left join customer_wishlist cw on c.id = cw.customer_id left join customer_wishlist_product cwp on cw.id = cwp.customer_wishlist_id;

Und nun mein Versuch, der aktuell nur unten genannte Fehlermeldung produziert

INSERT INTO sw6.customer SELECT cwp.*, cw.*, ct.*, cr.*, ca.*, c.* from customer c LEFT JOIN sw646.customer_address ca on c.id = ca.customer_id LEFT JOIN sw646.customer_recovery cr on c.id = cr.customer_id LEFT JOIN sw646.customer_tag ct ON c.id = ct.customer_id LEFT JOIN sw646.customer_wishlist cw ON c.id = cw.customer_id LEFT JOIN sw646.customer_wishlist_product cwp on cw.id = cwp.customer_wishlist_id;

Und zwar erhalte ich dabei den sql Fehler

#1136 - Anzahl der Felder stimmt nicht mit der Anzahl der Werte in Zeile 1 überein

PS: Es liegen natürlich beide DBs auf dem selben Server.

Was genau mache ich also falsch?

LG und herzlichen Dank im Voraus für jeden Tipp :)
 
Werbung:
Hallo zusammen

Ich bin noch blutiger MySql Anfänger, bastle aber gerne mal an einem Internetshop. Ich suche aktuell eine Lösung um diverse Daten von einer Datenbank in die andere (gleiche Struktur, aber leer) zu transferieren. Leider wollten bis jetzt sämtliche Versuche nicht gelingen.
Beschäftige Dich mit den Konzepten von Backup & Recovery - das brauchst Du hier.
 
Mache ich ja, sonst hätte ich hier gar nicht erst geschrieben, sondern die Shopverwaltung einer Firma übergeben. Wie Du an meinem Beispiel siehst, habe ich mir auch schon Gedanken gemacht, komme aber auf keinen grünen Zweig. Die Hoffnung war, dass mir hier jemand den entscheidenden Tipp geben kann.
 
Also normalerweise würde ja der Backup über phpMySql gemacht werden. D.h. ich gehe nach Export und lade mir dort die benötigten DBs runter oder speichere diese auf dem Server. Das Problem ist, dass Shopware irgendwo ein Fehler in der DB hat, die ein erneuten Import verhindern. Es gibt zu diesem Thema im Shopware Forum mindestens 50 Beiträge seit 2021 und offenbar gibt es keine Lösung. Mein Server Provider wollte es auch nicht glauben, und bastelte ganze 2-Tagen an einer Lösung. Er gab schlussendlich ratlos auf und verwies mich an den Shopware Support.

Die Fehlermeldung ist übrigens folgende:
Fehler.PNG

Da ich als Laie keine Ahnung habe woran das liegt, versuche ich es nun eben anders. Aber vielleicht sagt Dir das ja was.
 
das klingt alles so, also ob es im Ganzen entsorgt werden könnte. Fehlermeldungen als Bild sind übrigens auch schon mal prinzipbedingt Murks. Da scheint wohl eine FK-Beziehung kaputt zu sein. MySQL halt, da kann man meist nichts machen. Wer wichtige Daten hat, verwendet MySQL nicht, zumindest kein zweites Mal.
 
Welchen Teil hast Du an "Er gab schlussendlich ratlos auf und verwies mich an den Shopware Support." Deines Service-Providers nicht verstanden? Die Daten in Deiner DB sind offensichtlich korrupt - das passiert halt bei MySQL, so wie es nachts meistens dunkel ist.
 
Werbung:
Und nun mein Versuch, der aktuell nur unten genannte Fehlermeldung produziert

INSERT INTO sw6.customer SELECT cwp.*, cw.*, ct.*, cr.*, ca.*, c.* from customer c LEFT JOIN sw646.customer_address ca on c.id = ca.customer_id LEFT JOIN sw646.customer_recovery cr on c.id = cr.customer_id LEFT JOIN sw646.customer_tag ct ON c.id = ct.customer_id LEFT JOIN sw646.customer_wishlist cw ON c.id = cw.customer_id LEFT JOIN sw646.customer_wishlist_product cwp on cw.id = cwp.customer_wishlist_id;

Und zwar erhalte ich dabei den sql Fehler

#1136 - Anzahl der Felder stimmt nicht mit der Anzahl der Werte in Zeile 1 überein

PS: Es liegen natürlich beide DBs auf dem selben Server.
Bist Du Dir sicher, dass Du dieses Statement ausführen möchtest?
Für mich sieht es so aus. Du hast eine Reihe von identischen Tabellen, deren Inhalt Du in eine Zeile joinst und in eine neue Tabelle einfügst. Vielleicht willst Du das wirklich, aber mindestens die Keys würden pro QUelltabelle identisch und eben mehrfach in der Datenmenge auftauchen.

Du möchtest vielleicht kein Join, sondern ein Union ausführen.
Ganz grob:
Join: Daten werden nebeneinander zusammengeführt
Union: Daten werden untereinander zusammengeführt

Auf jeden Fall empfehle ich Dir dringend, genügend Backups während Deiner Experimente zu machen.
 
Zurück
Oben