ich möchte gerne die Datenbank von CE 4.10 Shop auf einen neuen 6.2 Shop migrieren. Dazu habe ich diese Anleitung gefunden, über die hier im Forum schon mehrfach geschrieben wurde.
Ich habe dazu die Datenbank vom 4.10 Shop exportiert (alle Module deaktiviert!) und im 6.2 Shop importiert. Dann habe ich die beiden mitgelieferten sql-Dateien und danach den Befehl vendor/bin/oe-eshop-db_migrate migrations:migrate ausgeführt. Als Ergebnis bekomme ich nach diesem Befehl
“No migrations to execute”
und wenn ich den Shop im aufrufe folgende Fehlermeldung:
Fatal error: Uncaught Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException: Circular reference detected for service “Psr\Log\LoggerInterface”, path: “Psr\Log\LoggerInterface -> Psr\Log\LoggerInterface”. in /home/shop_directory/vendor/symfony/dependency-injection/Container.php:297 Stack trace: #0 /home/shop_directory/source/overridablefunctions.php(209): Symfony\Component\DependencyInjection\Container->get(‘Psr\Log\LoggerI…’) #1 /home/shop_directory/vendor/oxid-esales/oxideshop-ce/source/Core/Registry.php(329): getLogger() #2 /home/shop_directory/vendor/oxid-esales/oxideshop-ce/source/Core/Module/ModuleChainsGenerator.php(420): OxidEsales\EshopCommunity\Core\Registry::getLogger() #3 /home/shop_directory/vendor/oxid-esales/oxideshop-ce/source/Core/Module/ModuleChainsGenerator.php(344): OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator->onModuleExtensionCreationError(‘z_multifilter_o…’) #4 /home/shop_directory in /home/shop_directory/vendor/symfony/dependency-injection/Container.php on line 297
Den nachfolgenden Befehl vendor/bin/oe-eshop-db_views_generate kann ich wegen dieser Fehlermeldung schon nicht mehr ausführen.
Hat jemand eine Idee, was hier der Fehler ist?
Vielen Dank schon im Voraus.
Das ist ein Modul von mir, eine Version für 6.2 ist verfügbar. Generell kannst du bei einer Migration von 4.10 auf 6.x die Module nicht einfach mitnehmen, du musst erst die 6.x ohne Module installieren, neue Versionen der Module besorgen und diese neu installieren.
Kann nicht richtig sein, wenn du die DB von 4.10 mit den Skripts auf 6.0 Stand gebracht hast dann gibt es Migrations zur 6.2.
Genau das ist der Plan. Deshalb habe ich die Module im 4er Shop deaktiviert vor dem Export der DB und habe sie in einen frischen Shop importiert. Ich möchte nur die Benutzer/Bestell/Artikeldaten übernehmen, nicht die alten Module.
Hätte ich auch gesagt. Warum er nichts findet ist mir schleierhaft.
Wie bekomme ich denn die alten Module aus der Datenbank raus? Im Backend sind sie alle deaktiviert.
DELETE FROM oxconfig WHERE OXVARNAME LIKE ‘%module%’
Dann kann man noch oxtplblocks leeren. Die Module erst dann ins modules Verzeichnis der 6.x kopieren wenn man sie neu installiert.
Normal ist das so: die Migrations stehen im Filesystem in source/migration/data. In der DB gibt es die Tabelle oxmigrations_ce, da steht drin welche schon ausgeführt wurden, die die noch nicht in der Tabelle stehen werden ausgeführt.
Also ich habe beides nochmal gemacht vor dem Export der DB. Trotzdem kommt der gleiche Fehler wie oben beschrieben, auf dem er sich auf das Modul z_multifilter bezieht.
In der Tabelle oxconfig sind noch etliche Zeilen, wo in OXMODULE “module:z_multifilter” steht. Die habe ich jetzt auch nochmal rausgelöscht, aber ohne Erfolg.
Was kann ich noch tun?
wurden die Einträge in oxconfig ganz sicher gelöscht?
Ich habe schon ein Paar mal gesehen, dass eine Datenbank das Löschen von Daten nicht anhand des Primärschlüssels verweigert hatte.
Führe mal SELECT * FROM oxconfig WHERE OXVARNAME LIKE ‘%module%’ im PhpMyAdmin o.ä. aus, kommt da was raus?
Ahhhh, DAAAANKE!!! Ja, das zeigt zumindest schon mal wieder den Shop. Danke @vanilla_thunder .
Den Befehl vendor/bin/oe-eshop-db_migrate migrations:migrate kann ich allerdings immer noch nicht ausführen bzw. es kommt immer noch der Hinweis, dass es nichts zu migrieren gibt. Ist das problematisch? Im Order source/migration/data sind auch Dateien zu finden.
Die Frage ist wie kommen die Daten da rein, entweder hast du Migrations schon ausgeführt oder die Tabelle war von einem früheren Update-Versuch noch da. Im Update-Script migrate_ce_5_3_to_6_0.sql steht dieses drin:
INSERT IGNORE INTO `oxmigrations_ce` (`version`) VALUES
('20170718124421'), ('20171018144650');
Direkt nach dem Ausführen des Updatescripts sollten also nur zwei Werte drin stehen, und der Rest wird dann durch
vendor/bin/oe-eshop-db_migrate migrations:migrate
ausgeführt. Erst wenn das gleiche Kommando dann nochmal ausgeführt wird kommt:
Also ich habe jetzt mal alle Daten aus der oxmigrations_ce Tabelle gelöscht und den Befehl vendor/bin/oe-eshop-db_migrate migrations:migrate nochmal ausgeführt. Nun hat er die Scripte ausgeführt.
Ich hoffe, dass genügt dann für die Datenbank-Migration.