Testspace erstellen - Fehler bei SQL Import

Hallo,

darf mich kurz vorstellen, Michael mein Name, habe vor kurzem die Verwaltung eines Oxid Shops eines Bekannten übernommen.

Der Wunsch war eine Möglichkeit zu schaffen, die Updates bzw. neue Erweiterungen vorher testen zu können, daher lag die Erstellung eines Testsystems naheliegend.

Die Vorgehensweise daher recht einfach: Kopie der Daten vom FTP ziehen, Dump aus der SQL DB ziehen und alles auf einer Subdomain wieder hochladen. Soweit sogut. Die FTP Daten waren auch kein Problem, allerdings erhalte ich folgende Fehlermeldung beim Importversuch in neue, leere DB:

SQL query: Documentation
CREATE ALGORITHM=UNDEFINED DEFINER=shop_web1@% SQL SECURITY INVOKER VIEW oxv_ddmenu AS select ddmenu.OXID AS OXID,ddmenu.OXSHOPID AS OXSHOPID,ddmenu.DDNAME AS DDNAME,ddmenu.DDNAME_1 AS DDNAME_1,ddmenu.DDNAME_2 AS DDNAME_2,ddmenu.`D

MySQL said: Documentation
#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation

Anscheinend existiert in der OriginalDB schon ein Fehler, der allerdings keine Auswirkungen auf den Live-Shop hat.

Der Eintrag findet sich mehrere Dutzend Male im Dump wieder (ab VIEW mit immer anderem Text)

Kennt jemand diesen Fehler und hat eventuell eine Lösung parat?

Vielen Dank im Voraus!

Das wichtigste für Dich wäre Punkt 3.

OK danke für den Hinweis, schau ich mir mal an!

Neue Fehlermeldung:

SQL-Befehl: Dokumentation

CREATE ALGORITHM=UNDEFINED DEFINER=shop_web1@% SQL SECURITY INVOKER VIEW oxv_ddmenu AS select ddmenu.OXID AS OXID,ddmenu.OXSHOPID AS OXSHOPID,ddmenu.DDNAME AS DDNAME,ddmenu.DDNAME_1 AS DDNAME_1,ddmenu.DDNAME_2 AS DDNAME_2,ddmenu.DDNAME_3 AS DDNAME_3,ddmenu.DDACTIVE AS DDACTIVE,ddmenu.DDSORT AS DDSORT,ddmenu.DDTYPE AS DDTYPE,ddmenu.DDCONTENTTYPE AS DDCONTENTTYPE,ddmenu.DDCATEGORYID AS DDCATEGORYID,ddmenu.DDCATEGORYLVL AS DDCATEGORYLVL,ddmenu.DDCONTENTCATEGORYID AS DDCONTENTCATEGORYID,ddmenu.DDCONTENTACTIVE AS DDCONTENTACTIVE,ddmenu.DDLINK AS DDLINK,ddmenu.DDLINK_1 AS DDLINK_1,ddmenu.DDLINK_2 AS DDLINK_2,ddmenu.DDLINK_3 AS DDLINK_3,ddmenu.DDLINKTARGET AS DDLINKTARGET,ddmenu.DDWIDGETS AS DDWIDGETS,ddmenu.DDWIDGETS_1 AS DDWIDGETS_1,ddmenu.DDWIDGETS_2 AS DDWIDGETS_2,ddmenu.DDWIDGETS_3 AS DDWIDGETS_3,ddmenu.OXTIMESTAMP AS OXTIMESTAMP,ddmenu[…]

MySQL meldet: Dokumentation
#1227 - Kein Zugriff. Hierfür wird die Berechtigung SUPER benötigt

Beim Dump wurden keine Tabellen mit dem Präfix oxv_ mit exportiert…

Na dann hast du ja schon die Fehlermeldung?!

Jein. Hilft mir leider nicht weiter, da der Hoster keine weiteren Berechtigungen für den User setzen kann.

Hier wird doch auch versucht, views wiederherzustellen. Das geht nicht. Einfach entfernen.

Das war auch der erste Ansatz vom Support, die meinten, alles hinter VIEW aus der Zeile rauslöschen. Brachte allerdings auch keinen Erfolg. Muss das VIEW hier doch mitgelöscht werden, d.h. alles ab INVOKER?

“brachte keinen Erfolg” ist leider keine verwertbare Fehlermeldung, die man analysieren kann, wir bräuchten dann schon die Fehlermeldung, die beim Ausführen kam.
Aber generell muss man einzelne SQL Anweisungen komplett entfernen, da eine halbe Anweisung ebenso zu einem Fehler führt, wie eine nicht ausführbare Anweisung. SQL Anweisungen, auch “Queries” genannt, werden mit einem ; beendet, d.h. Du musst den Semikolon vor der View-Anweisung finden und alles nach diesem Semikolon bis zum nächsten Semikolon + den Semikolon selbst löschen.

Sofern dein SQL-Dump sauber bearbeitet ist und alle VIEWS korrekt entfernt sind, ist das ggf. noch interessant für dich: https://www.proudcommerce.com/OXID-Blog/fehlerhafte-Datenbank-Views.html

@vanilla_thunder: Du hast natürlich völlig Recht.

Problem ist, im Dump findet sich in der Zeile nur ganz am Schluss ein Semikolon:


– Struktur des Views oxv_ddmenu_en

DROP TABLE IF EXISTS oxv_ddmenu_en;

CREATE ALGORITHM=UNDEFINED DEFINER=shop_web1@% SQL SECURITY INVOKER VIEW oxv_ddmenu_en AS select ddmenu.OXID AS OXID,ddmenu.OXSHOPID AS OXSHOPID,ddmenu.DDNAME_1 AS DDNAME,ddmenu.DDACTIVE AS DDACTIVE,ddmenu.DDSORT AS DDSORT,ddmenu.DDTYPE AS DDTYPE,ddmenu.DDCONTENTTYPE AS DDCONTENTTYPE,ddmenu.DDCATEGORYID AS DDCATEGORYID,ddmenu.DDCATEGORYLVL AS DDCATEGORYLVL,ddmenu.DDCONTENTCATEGORYID AS DDCONTENTCATEGORYID,ddmenu.DDCONTENTACTIVE AS DDCONTENTACTIVE,ddmenu.DDLINK_1 AS DDLINK,ddmenu.DDLINKTARGET AS DDLINKTARGET,ddmenu.DDWIDGETS_1 AS DDWIDGETS,ddmenu.OXTIMESTAMP AS OXTIMESTAMP,ddmenu.OXSHOPINCL AS OXSHOPINCL,ddmenu.OXSHOPEXCL AS OXSHOPEXCL,ddmenu.OXMAPID AS OXMAPID from ddmenu ;

Ohne die Anweisungen bearbeiten zu müssen, kannst auch in der Original-Datenbank alle mit “oxv_” beginnenden Tabellen löschen, bevor Du ein Backup erstelltst. Nicht vergessen, danach
die Views im Admin wiederherzustellen.

Das wurde mir weiter oben schon empfohlen, brachte leider auch nichts.

Neue Fehlermeldung:

SQL-Befehl: Dokumentation

CREATE ALGORITHM=UNDEFINED DEFINER=shop_web1@% SQL SECURITY INVOKER VIEW oxv_ddmenu AS select ddmenu.OXID AS OXID,ddmenu.OXSHOPID AS OXSHOPID,ddmenu.DDNAME AS DDNAME,ddmenu.DDNAME_1 AS DDNAME_1,ddmenu.DDNAME_2 AS DDNAME_2,ddmenu.DDNAME_3 AS DDNAME_3,ddmenu.DDACTIVE AS DDACTIVE,ddmenu.DDSORT AS DDSORT,ddmenu.DDTYPE AS DDTYPE,ddmenu.DDCONTENTTYPE AS DDCONTENTTYPE,ddmenu.DDCATEGORYID AS DDCATEGORYID,ddmenu.DDCATEGORYLVL AS DDCATEGORYLVL,ddmenu.DDCONTENTCATEGORYID AS DDCONTENTCATEGORYID,ddmenu.DDCONTENTACTIVE AS DDCONTENTACTIVE,ddmenu.DDLINK AS DDLINK,ddmenu.DDLINK_1 AS DDLINK_1,ddmenu.DDLINK_2 AS DDLINK_2,ddmenu.DDLINK_3 AS DDLINK_3,ddmenu.DDLINKTARGET AS DDLINKTARGET,ddmenu.DDWIDGETS AS DDWIDGETS,ddmenu.DDWIDGETS_1 AS DDWIDGETS_1,ddmenu.DDWIDGETS_2 AS DDWIDGETS_2,ddmenu.DDWIDGETS_3 AS DDWIDGETS_3,ddmenu.OXTIMESTAMP AS OXTIMESTAMP,ddmenu[…]

MySQL meldet: Dokumentation
#1227 - Kein Zugriff. Hierfür wird die Berechtigung SUPER benötigt

Wenn Du die Empfehlung umgesetzt hättest, wäre es dedinitiv zielführend gewesen, klingt komisch, ist aber so.

Wie darf ich das verstehen? Mehr als die Tabellen nicht exportieren und dann versuchen den Dump in eine neue DB zu importieren hätte ich hier nicht rausgelesen. Aus der Live-Datenbank lösche ich keine Tabellen raus…

Lass beim Export gleich die ganzen View-Tabellen weg (und zwar komplett), importier diesen Dump in eine leere Datenbank und alles wird schick.

views waren wohl doch im dump …

Ich habe jetzt folgendes ausprobiert:

In der Original DB gib es eine Unterteilung in “Ansichten” und “Tabellen”. Unter “Ansichten” sind nur Tabellen mit oxv_ Präfix enthalten. Daher habe ich nur den Inhalt von “Tabellen” exportiert.

Beim Importversuch in eine neue DB erhalte ich diese Fehlermeldung:

SQL-Befehl: Dokumentation

CREATE ALGORITHM=UNDEFINED DEFINER=shop_web1@% SQL SECURITY INVOKER VIEW oxv_ddmenu AS select ddmenu.OXID AS OXID,ddmenu.OXSHOPID AS OXSHOPID,ddmenu.DDNAME AS DDNAME,ddmenu.DDNAME_1 AS DDNAME_1,ddmenu.DDNAME_2 AS DDNAME_2,ddmenu.DDNAME_3 AS DDNAME_3,ddmenu.DDACTIVE AS DDACTIVE,ddmenu.DDSORT AS DDSORT,ddmenu.DDTYPE AS DDTYPE,ddmenu.DDCONTENTTYPE AS DDCONTENTTYPE,ddmenu.DDCATEGORYID AS DDCATEGORYID,ddmenu.DDCATEGORYLVL AS DDCATEGORYLVL,ddmenu.DDCONTENTCATEGORYID AS DDCONTENTCATEGORYID,ddmenu.DDCONTENTACTIVE AS DDCONTENTACTIVE,ddmenu.DDLINK AS DDLINK,ddmenu.DDLINK_1 AS DDLINK_1,ddmenu.DDLINK_2 AS DDLINK_2,ddmenu.DDLINK_3 AS DDLINK_3,ddmenu.DDLINKTARGET AS DDLINKTARGET,ddmenu.DDWIDGETS AS DDWIDGETS,ddmenu.DDWIDGETS_1 AS DDWIDGETS_1,ddmenu.DDWIDGETS_2 AS DDWIDGETS_2,ddmenu.DDWIDGETS_3 AS DDWIDGETS_3,ddmenu.OXTIMESTAMP AS OXTIMESTAMP,ddmenu[…]

MySQL meldet: Dokumentation
#1227 - Kein Zugriff. Hierfür wird die Berechtigung SUPER benötigt

=> Wie würde ich die VIEWS restlos aus dem Dump rausbekommen?

Steht doch oben. Oder installiere Dir den mysqldumper. Dieser lässt Dir nach dem Backup die Möglichkeit, nur bestimmte Tabellen wiederherzustellen.

mysql workbench geht auch, wenn man auf PC/Dektop Programme steht.