Grüße! Ich bin Aneesh Sreedharan, CEO von 2Hats Logic Solutions. Bei 2Hats Logic Solutions widmen wir uns der Bereitstellung von technischem Fachwissen und der Lösung Ihrer Probleme in der Welt der Technologie. Unsere Blog-Seite dient als Ressource, in der wir Einblicke und Erfahrungen teilen und wertvolle Perspektiven auf Ihre Fragen bieten.
Kürzlich musste ich für ein Projekt die Live-Datenbank von Shopware 6 importieren. Aber die Live-Datenbank war Mariadb. Ich musste einige produktbezogene Änderungen in dieser Datenbank vornehmen. Beim Importieren der Datenbank in mein lokales System, das nur MySQL als Datenbankdienst hatte, sind mehrere Probleme aufgetreten. Darauf werde ich in diesem Blogbeitrag ausführlich eingehen.
Schritt 1 – Ich habe mich bei SSH angemeldet und den Befehl mysqldump verwendet, um die Datenbank von einem Server zu exportieren, der sich in Mariadb befand.
1 | mysqldump -u username -p -h hostname databasename > filename.sql |
Schritt 2- Nachdem der Export abgeschlossen war, lud ich die exportierte SQL-Datei über ftp in mein lokales System herunter.
Schritt 3- Ich habe dann eine neue Datenbank mit dem Namen shopware_live in meinem lokalen Mysql erstellt. Dann versuchte ich, die exportierte Datenbank mit dem folgenden Befehl zu importieren.
1 | mysql -u root shopware_live < pathtofile.sql |
Dabei wurde die Fehlermeldung “Variable ‘sql_mode’ kann nicht auf den Wert von ‘NO_AUTO_CREATE_USER’ gesetzt werden” angezeigt. Um dieses Problem zu lösen, habe ich die SQL-Datei bearbeitet und die Anweisung ‘NO_AUTO_CREATE_USER’ entfernt.
Als ich dann versuchte, die Datenbank zu importieren, erhielt ich die Fehlermeldung “Ungültiger Standardwert für ‘cms_page_version_id'”. Das Problem war, dass der Standardwert für “cms_page_version_id” in einem unbekannten Format wie “���jK¾K��u,4%” war.
Schritt 1- Um dieses Problem zu lösen, ersetzte ich den Wert durch ‘???jK¾K??u,4%’.
Schritt 2: Ersetzen Sie auch den Standardwert von version_id durch denselben Wert
1 | document_number` varchar(255) GENERATED ALWAYS AS (json_unquote(json_extract(`config`,'$.documentNumber'))) STORED |
Then again, when trying to import the database I got “The value specified for generated column
1 | document_number' in table 'document' is not allowed” error. |
Dieses Problem ist hauptsächlich auf die generierten Spalten zurückzuführen.
So what I did was to replace the GENERATED keyword and the values after that with NULLdocument_number
varchar(255) NULL,
Dieses Problem trat bei den folgenden Spalten auf. Daher musste ich die oben genannten Schritte auch für diese Spalten durchführen.
In ‘order’ table -> order_date, amount_total, amount_net, position_price, tax_status, shipping_total
In ‘order_delivery_position’ table -> total_price, unit_price and quantity
In ‘order_line_item’ table -> unit_price, total_price
In ‘product_keyword_dictionary’ table -> reversed
In ‘state_machine_history’ table -> referenced_id and referenced_version_id
Fazit
Jetzt konnte ich die Datenbank ohne Fehler importieren und das Projekt in meinem lokalen Umfeld bearbeiten. Durch die systematische Behebung dieser Probleme kann der Datenbankimport abgeschlossen werden, so dass ein nahtloser Übergang von einer MariaDB-Umgebung zu einer MySQL-Einrichtung möglich ist. Auf diese Weise wird sichergestellt, dass die Shopware 6-Datenbank im lokalen MySQL-System korrekt funktioniert, so dass die Entwickler an ihren Projekten arbeiten können, ohne auf unerwartete Fehler zu stoßen. Sollten Sie bei der Ausführung von Schritten mit Shopware 6 auf Schwierigkeiten stoßen, können Sie sich gerne an die Experten von Shopware Services wenden.