Update auf Oxid 6.4.0

Guten Abend,

ich versuche gerade in meiner Testumgebung einen Shop von 6.2.3 auf 6.4.0 zu updaten.
Das Update läuft bis zu dem Punkt “Datenbank migrieren” fehlerfrei.
Wenn ich allerdings den Befehl “vendor/bin/oe-eshop-db_migrate migrations:migrate” ausführe, erhalte ich den folgenden Fehler:

PHP Fatal error: Uncaught Error: Undefined class constant ‘MYSQL_ATTR_INIT_COMMAND’ in /opt/lampp/htdocs/oxid/vendor/oxid-esales/oxideshop-doctrine-migration-wrapper/src/migrations-db.php:25

Ich stelle mir daher gerade die Frage, ob es überhaupt möglich ist, direkt von 6.2.3 auf 6.4 zu updaten.
Oder muss ich einen Zwischenschritt auf die Version 6.3 durchführen?

Viele Grüße und besten Dank,
Pauleo77

Normal sollte der Sprung von 6.2 Serie auf 6.4 Serie reibungslos funktionieren.

Deine Fehlermeldung deutet daraufhin, dass Du ein Problem mit den Server Systemvoraussetzungen hast. Bitte prüfen ob die PHP Erweiterung PDO_MySQL auf Deiner Testumgebung installiert ist bzw. in den php.ini Einstellungen aktiviert.

Link zu den Systemvoraussetzungen Server and system requirements — OXID eShop 6.4 | User documentation

Viele Grüße,
Tim

Hallo Tim,

Danke für die Rückmeldung.

Laut meiner PHPInfo scheint die Erweiterung aktiv zu sein:

Ich wundere mich allerdings, dass in der php.ini die Extension ein Semikolon vorangestellt hat - sprich auskommentiert ist.

;extension=php_pdo_mysql.dll

Wenn ich das Semikolon wegnehme und den Apache neustarte, erhalte ich allerdings die gleiche Fehlermeldung bei der Datenbankmigration. Auch die PHPInfo bleibt unverändert.

Mir ist allerdings gerade noch etwas aufgefallen bei der Systemgesundheitsprüfung.
Der Punkt “Dateiberechtigungen” wird als rot markiert.
Die Berechtigungen sind rekursiv analog der Doku gesetzt. Irgendwo scheint er sich aber trotzdem zu stören.
https://docs.oxid-esales.com/eshop/en/6.4/installation/new-installation/completing-installation.html

Die PHP-Erweiterung “PDO_MySQL” ist grün.

Du verwendest in Deiner Testumgebung doch eine Linux Betriebssystem oder? Darauf deutet oben in Fehlermeldung das “lampp” hin.

Dann wäre es der Eintrag

extension=php_pdo_mysql.so on Linux/Mac

Quelle: php - Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' with pdo - Stack Overflow

Update: Ansonsten kann es einfach an Deiner CLI Konfiguration liegen. Da diese für die Konsole der Migration greift.

Ja, genau. Meine Testumgebung läuft lokal auf meinem Laptop mit Lubuntu 20.04 und lampp. Daher hat der dll-Eintrag in der php.ini auch keinen Effekt gehabt.
Den Eintrag

php_pdo_mysql.so

kann ich in der php.ini jedoch nicht finden. Da die PHPInfo angibt, dass die Erweiterung PDO_MySQL aktiv ist, gehe ich davon aus, dass die Erweiterung in der lampp-Umgebung standardmäßig integriert ist.

Dein Hinweis mit der CLI-Konfiguration hat mich jedoch, glaube ich, auf die richtige Fährte gebracht.
Lubuntu 20.04 bringt PHP 7.4 mit. Hier fehlt auch die PDO-Extension. Dabei ist mir aufgefallen, dass ich Composer nicht mit lampp verknüpft habe. Composer versucht daher die lokale PHP-Installation sowie die lokale MySQL-DB zu verwenden.

Ich werde daher heute Abend noch mal Composer deinstallieren und anschließend neu installieren und in lampp integrieren. Danach klappt es dann hoffentlich.
Ich gebe noch mal eine Rückmeldung.

1 Like

Freut mich.

Drücke die Daumen, dass es dies war. Feedback immer gut :slight_smile:

Das war tatsächlich die Ursache. Nachdem ich Composer mit lampp verknüpft habe, hat auch die DB-Migration geklappt.

Ich habe Composer wie folgt installiert:

sudo curl -s https://getcomposer.org/installer | /opt/lampp/bin/php
sudo ln -s /opt/lampp/bin/php /usr/local/bin/php
sudo mv composer.phar /usr/local/bin/composer

Vielen Dank für Deine Unterstützung! :slight_smile:

2 Likes