fehlerhafte Datenbank-Views


Seit dem OXID eShop 4.5 sind Datenkbank-Views (?) Bestandteil und Voraussetzung für einen lauffähigen Shop.

Kopiert man nun eine Datenbank oder spielt ein Backup ein, kann es jedoch zu Probleme damit kommen. Je nach Berechtigung des Datenbank-Users darf dieser keine Views anlegen.

Dies äußert sich z. B. in folgender Fehlermeldung:

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

Was tun? Als Erstes sollte man prüfen ob die Views nicht fälschlicherweise als Tabelle angelegt worden sind:

DROP TABLE oxv_oxarticles;

Falls die Ausführung erfolgreich ist, sollten auch alle anderen "View-Tabellen" gelöscht werden. Ist das nicht der Fall, kann man mit folgendem Eintrag in der config.inc.php die Nutzung der Views vorrübergehend deaktivieren:

$this->blSkipViewUsage = true;

Dies ist jedoch nur bei Problemen zu empfehlen, im Live-Betrieb sollten Views unbedingt genutzt werden. Führt auch diese Einstellung nicht zum gewünschten Erfolg, besteht noch die Möglichkeit mit einer eigenen "Standalone-Datei" die Views 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();
?>


Tags: views, updateviews, oxv, oxid, database, blskipviewusage