Mysqldump einspielen

Ich habe jetzt Mal einen Dump von meinem inaktiven SW5 Shop aufgespielt und der Ex- und Import klappte beim ersten Versuch ohne Probleme.

Ich habe im Web nicht wirklich was gefunden zu der Fehlermeldung beim Import

‚order_date‘ in table ’ order ’ is not allowed.

Meine Vermutung ist es, dass vom Migrationstool die Datenbank zerstört wurde, weil ich den Wechsel von SW5 zu SW6 auch nicht ganz sauber abgeschlossen habe. Wäre Mal Interessant zu wissen, ob alle mit dem Fehler auch das Migrationstool verwendet haben oder ob es ein Bug in SW 6 ist.

Gibts hier was neues? Haben das Problem immer noch, Dump von MariaDB wird zwar mit --force erfolgreich importiert, aber Bestellungen und Kunden fehlen. Schon ziemlich alles aus diesem Thread probiert.

ERROR 3105 (HY000) at line 3768: The value specified for generated column 'order_date' in table 'order' is not allowed.
ERROR 3105 (HY000) at line 3978: The value specified for generated column 'total_price' in table 'order_delivery_position' is not allowed.
ERROR 3105 (HY000) at line 4039: The value specified for generated column 'unit_price' in table 'order_line_item' is not allowed.
ERROR 3105 (HY000) at line 5866: The value specified for generated column 'reversed' in table 'product_keyword_dictionary' is not allowed.

Werden generated columns nicht selbst erstellt (generiert). Entsprechend darf im Import für die Spalte vermutlich kein Wert stehen.

Im Import müsste dann diese Werte herausgelöst werden.

Ist nur eine Vermutung, habe die SQL-Dokumentaiton nicht nachgelesen.

Gute Frage. Ein Export von PhpMyAdmin lässt sich aber ohne Probleme einspielen. Hier mal die Unterschiede in den beiden Dumps bei der Tabelle „order“.

PhpMyAdmin

mysqldump

Also mit der Formatierung scheint irgendwas nicht zu passen…

Die Codierung scheint falsch zu sein. Da musst du das charset vermutlich auf Ute_8 ändern.

wäre das nicht die Option --hex-blob ?

Schon probiert, aber hier trotzdem nochmal der Dump mit --hex-blob. Die Chars sind jetzt lesbar, aber unterscheidet sich trotzdem vom PhpMyAdmin Dump

Es gibt generierte Spalten als VIRTUAL und als STORED. Die Spalten bei Shopware um die es hier geht sind STORED.
Es muss doch möglich sein einen Dump und Restore durchzuführen ohne verschiedene Mariadb/Mysql Programmversionen zu nutzen mit SSH Tunnel und / oder bearbeiten der Dumps. Das ist doch völliger Schwachsinn. In der Regel laufen die Shops bei irgendeinem Hoster und da hat man keine Möglichkeit unterschiedliche Programmversionen zu nutzen.

Nach jetzigem Stand würde das bedeuten man kann keinen Restore mehr durchführen sobald Bestellungen im Shop getätigt wurden. Im Ernst, @Shopware? Was passiert nach einem misglückten Softwareupdate in einem laufenden Shop? Restore unmöglich, Shop platt…

Könnte sich vielleicht mal ein Entwickler von Shopware hier einklinken und mal einen Dump und Restore Befehl mit den entsprechenden Paramtern posten der auch dann funktioniert? Die aktuelle Situation kann es doch echt nicht sein.

In meinem Fall funktionierte der Dump & Restore per phpMyAdmin. (per mysqldump nicht)
Wäre trotzdem froh über eine Erläuterung.

phpmyadmin nutzt PHP. Dies nutzt den gleichen chatset wie Shopware. mysqldump nutzt den chatset, der dort voreingestellt ist und anders zu dem von PHP sein kann.

danke für die Rückmeldung. Was meinst du mit chatset und wie kann man diese Info praktisch anwenden?

Er meinte wohl „Charset“.

Der Fehler tritt bei mir bei mysqldump, Adminer sowie Phpmyadmin auf. Und das bei 3 gehosteten Shops mit Mysql 8.0.19 bzw. 8.0.20

Was ich nicht verstehe: Angeblich laufen die Datenbanken auf Mysql 8.0, wird auch von Adminer so angezeigt. Aber die Konsolen Tools (mysqldump und mysql) zeigen Mariadb 10.1.48 an. Habe ich jetzt Mysql 8.0 oder nicht? Was aber auch relativ egal ist denn mit Adminer funktioniert es ja auch nicht.

ist eigentlich egal was er meint. Wichtiger wäre es darauf einzugehen wie seine Info praktisch anwendbar wäre. Denn egal ob chatset oder charset (wovon ich auch ausgehe) er scheint eine Lösung zu haben.

Ja, ich meinte natürlich charset. Keine Ahnung, was die Autokorrektur da gemacht hat.

Grundsätzlich, wer Tools wie phmyadmin, adminer, etc. nutzt, der nutzt meistens auch gleichzeitig die PHP-Konfiguration, die auch Shopware nutzt. Sprich der gleiche charset, die gleiche Berechtigungen etc.

Der Klassiker bei mysqldump ist z.B., dass ohne --no-tablespaces exportiert wird, was dazu führt, dass die Daten aufgrund fehlender Berechtigungen nicht wieder importiert werden können. Das hat jetzt mit dem Thema aber nichts zu tun.

MySQL gibt ja normalerweise sehr gute Fehlermeldungen zurück, wieso etwas nicht funktioniert hat, bspw.: „The value specified for generated column ‚order_date‘ in table ‚order‘ is not allowed.“ Darüber sollte sich eigentlich alles lösen lassen.

In Stackoverflow etc. gibt es ja genug Erklärungen: sql - how to restore mysql backup that have generated always as column? - Stack Overflow

Das steht schon alles mehr oder weniger in diesem Thread (dass es nicht geht). Wir haben immer noch keine konkrete Lösung oder Erklärung. (wie es geht).

Die letzte Frage war: warum geht es per phpMyAdmin und nicht per mysqldump. Bzw. welche Argumente muss ich an mysqldump übergeben, damit es klappt. Bzw. kann ich irgendwo sehen wegen welchen Argumenten phpMyAdmin es schafft.

In dem Stackoverflow Thread steht klar, dass MariaDB ein Problem mit stored values hat und wie man diese nachträglich aus dem dump löscht. Ich habe diesen Ansatz jetzt nicht getestet, aber es ist immerhin ein Lösungsansatz.

Und zu deiner Frage. Jeder Server nutzt andere Software, andere Konfigurationen. Schwer, da eine pauschale Antwort zu finden. Vielleicht liegt es ja auch an der nicht kompatiblen MariaDB-Version (habe ich irgendwo mal hier im Forum gelesen).

Bei manchen hilft ja schon phpmyadmin zu nutzen… daher sieht man, dass das Problem vielschichtig ist.

Da ich das Problem nicht nachstellen kann, kann ich außer generelle Ratschläge leider nicht mehr dazu sagen bzw. empfehlen. Sorry.

Ich möchte euch nochmal an diesen Beitrag erinnern, der wohl unter geht:

Damit läuft es wunderbar und ich kann ohne Probleme Backups erstellen und einspielen.
Also ran an die Konsole, fertig los :sunglasses:

danke, hat für mich leider nicht funktioniert. Deswegen ging es dann weiter…

hab mal versucht nach zu verfolgen was dein problem sein sollte, was ich leider nicht habe.
daher frage ich ggf. noch mal.
was geht nicht an mysqldump ausführen und *.sql nachbearbeiten?

Das geht ja schon. Man macht es aber nicht um es zu machen, sondern um importieren zu können. Und nach dieser Bearbeitung bricht der Import genauso ab wie vor der Bearbeitung.

Fehlermeldung:
ERROR 3105 (HY000) at line 3600: The value specified for generated column ‚order_date‘ in table ‚order‘ is not allowed.

Der Dump via phpMyAdmin kann problemlos importiert werden.