Wie Sie fehlerhafte Datenbank-Views beheben können.

Mit dem Release der OXID eShop Version 4.5 sind Datenbank-Views eine feste Komponente und Voraussetzung für einen funktionstüchtigen Onlineshop.

Zu Problemen mit den Datenbank-Views kann es kommen, wenn man eine Datenbank kopiert oder ein Backup einspielt. Entsprechend der Ermächtigung des Database-Users darf dieser keine Views anlegen. Die Fehlermeldung sieht in dem Fall folgendermaßen aus:

Fatal error: Uncaught exception ‘oxAdoDbException’ with message ‘mysql error’:
[1347: ‘xxx.oxv_oxarticles’ is not VIEW] in EXECUTE (CREATE OR REPLACE SQL SECURITY INVOKER VIEW ‘oxv_oxarticles’ AS SELECT

Bei diesem Problem kann wie folgt Abhilfe geschaffen werden: Als erster Schritt sollte geprüft werden, ob die Views nicht irrtümlich als Tabellen angelegt worden sind:

DROP TABLE oxv_oxarticles;

Bei erfolgreicher Ausführung, sollten ebenfalls alle anderen‌ View-Tabellen‌ gelöscht werden. Sollte mit dieser Einstellung das Problem nicht behoben worden sein, kann mit folgendem Eintrag in der‌ config.inc.php‌ die Verwendung der Views vorrübergehend deaktiviert werden:

$this->blSkipViewUsage = true

Diese Vorgehensweise ist allerdings nur bei Problemen zu empfehlen, da die Views im Live-Betrieb unbedingt genutzt werden sollten. Ist auch diese Ausführung nicht erfolgreich, besteht noch die Möglichkeit, die Views mit einer eigenen‌ Standalone-Datei zu löschen:

<?php
function getShopBasePath() {
return dirname(FILE) . '/';
}
function isAdmin() {
return false;
}
include getShopBasePath() . 'modules/functions.php';
require_once getShopBasePath() . 'core/oxfunctions.php';
$config = oxConfig::getInstance();
oxDb::getInstance()->updateViews();
?>

Als Quelle diente der hilfreiche Beitrag von proudcommerce.