Nach Migration: Update DB Views: DB Views update failed

oxid6

#1

Hallo zusammen,
ich habe einen neuen Shop aufgesetzt in einer Entwicklungsumgebung unter PHP 7. Dann wurde das Ganze auf die Live-Umgebung migriert unter PHP 7.2.
Zunächst konnte ich mich erst mit dem bekannten Trick in den Admin-Bereich einloggen, die Views Tables über die entsprechende Einstellung in der Config zu überspringen (dank diverser Forenbeiträge). Neue Views im Backend generieren klappt allerdings nicht (erzeugt die Meldung “DB Views update failed”).

Im error_log sieht man dazu:
PHP Warning: count(): Parameter must be an array or an object that implements Countable in /srv/www/VHOSTNAME/source/tmp/smarty/62f34a93e1a56bd88ae36eaa9a669c5f^%%47^47B^47B0D5FE%%inc_error.tpl.php on line 4,
referer: https://DOMAINNAME/admin/index.php?editlanguage=1&force_admin_sid=85a29rd1l4b961f3q06j7bj0u4&stoken=4C204F22&&cl=tools_main&oxid=-1

Das Exception Log sagt:
[exception] [type OxidEsales\Eshop\Core\Exception\DatabaseErrorException] [code 1064] [file /srv/www/VHOSTNAME/vendor/oxid-esales/oxideshop-ce/source/Core/Database/Adapter/Doctrine/Database.php] [line 938] [message You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘FROM oxwrapping’ at line 1]
[exception] [stacktrace] #0 /srv/www/VHOSTNAME/vendor/oxid-esales/oxideshop-ce/source/Core/Database/Adapter/Doctrine/Database.php(779): OxidEsales\EshopCommunity\Core\Database\Adapter\Doctrine\Database->convertException(Object(Doctrine\DBAL\Exception\SyntaxErrorException))
[exception] [stacktrace] #1 /srv/www/VHOSTNAME/vendor/oxid-esales/oxideshop-ce/source/Core/Database/Adapter/Doctrine/Database.php(576): OxidEsales\EshopCommunity\Core\Database\Adapter\Doctrine\Database->executeUpdate(‘CREATE OR REPLA…’, Array)
[exception] [stacktrace] #2 /srv/www/VHOSTNAME/vendor/oxid-esales/oxideshop-ce/source/Application/Model/Shop.php(360): OxidEsales\EshopCommunity\Core\Database\Adapter\Doctrine\Database->execute(‘CREATE OR REPLA…’)
[exception] [stacktrace] #3 /srv/www/VHOSTNAME/vendor/oxid-esales/oxideshop-ce/source/Application/Model/Shop.php(141): OxidEsales\EshopCommunity\Application\Model\Shop->_runQueries()
[exception] [stacktrace] #4 /srv/www/VHOSTNAME/vendor/oxid-esales/oxideshop-ce/source/Core/DbMetaDataHandler.php(569): OxidEsales\EshopCommunity\Application\Model\Shop->generateViews(false, Array)
[exception] [stacktrace] #5 /srv/www/VHOSTNAME/vendor/oxid-esales/oxideshop-ce/source/Application/Controller/Admin/ToolsList.php(36): OxidEsales\EshopCommunity\Core\DbMetaDataHandler->updateViews()
[exception] [stacktrace] #6 /srv/www/VHOSTNAME/vendor/oxid-esales/oxideshop-ce/source/Core/Controller/BaseController.php(523): OxidEsales\EshopCommunity\Application\Controller\Admin\ToolsList->updateViews()
[exception] [stacktrace] #7 /srv/www/VHOSTNAME/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(332): OxidEsales\EshopCommunity\Core\Controller\BaseController->executeFunction(‘updateViews’)
[exception] [stacktrace] #8 /srv/www/VHOSTNAME/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(274): OxidEsales\EshopCommunity\Core\ShopControl->executeAction(Object(OxidEsales\Eshop\Application\Controller\Admin\ToolsList), ‘updateViews’)
[exception] [stacktrace] #9 /srv/www/VHOSTNAME/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(137): OxidEsales\EshopCommunity\Core\ShopControl->_process(‘OxidEsales\Esho…’, ‘updateViews’, NULL, NULL)
[exception] [stacktrace] #10 /srv/www/VHOSTNAME/vendor/oxid-esales/oxideshop-ce/source/Core/Oxid.php(26): OxidEsales\EshopCommunity\Core\ShopControl->start()
[exception] [stacktrace] #11 /srv/www/VHOSTNAME/source/index.php(23): OxidEsales\EshopCommunity\Core\Oxid::run()
[exception] [stacktrace] #12 /srv/www/VHOSTNAME/source/admin/index.php(11): require_once(’/srv/www/stedma…’)
[exception] [stacktrace] #13 {main}

Parallel kann ich auch bei den SEO-Settings keine Änderungen speichern, mir ist nicht klar, ob das gemeinsame Ursachen hat. Datenbank-Zugriff generell klappt, im Frontend wir alles korrekt ausgelesen.
Hierbei erscheint im error_log:
PHP Warning: count(): Parameter must be an array or an object that implements Countable in /srv/www/VHOSTNAME/source/tmp/smarty/62f34a93e1a56bd88ae36eaa9a669c5f^%%47^47B^47B0D5FE%%inc_error.tpl.php on line 4,
referer: https://DOMAINNAME/admin/index.php?editlanguage=1&force_admin_sid=85a29rd1l4b961f3q06j7bj0u4&stoken=4C204F22&

Im Exception-Log steht nichts.

Das alles trifft auf in der Version CE 6.0.2.
Hat jemand ein ähnliches Problem oder einen Ansatz für die Fehlersuche?
Vielen Dank :slight_smile:


#2

Ho!

In der Konsole kannst du vendor/bin/oe-eshop-db_views_regenerate ausführen bzw. wenn PHP nicht global erreichbar ist eben mit Pfad zur PHP binary davor, um die Views neu zu generieren. Das hat zumindest bei mir geholfen.


#3

Super, herzlichen Dank für den Tipp!
Hat (mit Pfad zu PHP) funktioniert und alle genannten Probleme auf einmal gelöst! :star_struck:

P.S.: Wer’s auch nicht wusste: Mit “whereis php” bekommt man tatsächlich den Pfad zu PHP raus