share

OXID Datenbankdump ohne Views

OXID nutzt für die Mehrsprachigkeit die Views von MySQL. Bei einigen Hostern machen diese jedoch Probleme, wenn man die Datenbank per mysqldump sichern möchte.

Glücklicherweise beginnen die Views alle mit „oxv_“, so dass man diese auschließen kann.

Hier das Entsprechende Script für den Aufruf auf der Commandline:

mysql [dbname] -u [username] -p[password] -e 'show tables where tables_in_[dbname] not like "oxv\_%"' | grep -v Tables_in | xargs mysqldump [dbname] -u [username] -p[password] > [dump_file]

Es werden alle Tabellen ausgelesen, welche nicht mit oxv_ beginnen und ein Dump mit allen anderen erzeugt.

Nachdem man den Dump in die neue Datenbank importiert hat, im Backend unter „Tools“ einfach die Views neu erzeugen.

In manchen Versionen ist jedoch ohne Views gar kein Login ins Backend möglich. Hier hilft das setzen des entprechenden Eintrags in der config.inc.php

$this->blSkipViewUsage = true;


EDIT:

Bei Profihost müssen noch die Pfade für MySQL5 angepasst werden:

/usr/local/mysql5/bin/mysql [dbname] -u [username] -p[password] -e 'show tables where tables_in_[dbname] not like "oxv\_%"' | grep -v Tables_in | xargs /usr/local/mysql5/bin/mysqldump [dbname] -u [username] -p[password] > [dump_file]

Joscha Krug ist Gründer und Geschäftsführer der marmalade GmbH aus Magdeburg. Mit seinem stetig wachsenden Team realisiert er schon seit 2009 E-Commerce Projekte mit OXID eShop und Shopware. Er ist Autor der beiden OXID Bücher, erschienen bei o'Reilly.

6 Kommentare zu:

OXID Datenbankdump ohne Views

  • Olli

    Ich kenne mich mit mysql leider nicht gut genug aus – aber ich würde mal schätzen, dass wenn man den Parameter -p weglässt, dass man dann nach dem Passwort gefragt wird. Hat halt den Vorteil, dass das Passwort nicht in der History der Shell auftaucht und auch in der Prozesstabelle mit ps und ähnlichem nicht sichtbar zu machen ist.
    Ist natürlich für Skripte nicht zu gebrauchen – evtl. gibt es da eine Lösung mit public/private keys…

  • Martin

    Man muss einfach das Passwort weglassen. Der Parameter -p muss stehen bleiben, sonst denkt MySQL. man würde es ohne Passwort versuchen wollen.
    Anderes Problem: Wenn der Shop nicht im utf-8-Modus läuft und man eine neue Version von mysqldump einsetzt (>= MySQL 5.5? s. http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html#option_mysqldump_default-character-set), dann kann es zu Problemen mit den Kollationen bzw. Zeichensätzen kommen, wenn diese nicht explizit für die entstehende SQL-Datei angegeben werden (http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html#option_mysqldump_set-charset).
    Noch schlimmer kann es beim Reimport eines solchen Dumps kommen, wenn man die Daten von oxconfig nicht hexadezimal exportiert (http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html#option_mysqldump_hex-blob) und der Zeichensatz in der SQL-Datei nicht explizit angegeben wurde.
    Oder bin ich der einzige, dem so etwas schon mal passiert ist?

  • Friedemann

    besser: ’show tables where `[dbname]` …‘. Dadurch werden auch „komische“ Datenbanknamen genommen.

  • Ansgar

    Bei der Suche nach einer Möglichkeit einen Dump ohne Views zu erstellen, kam ich hierher. Den Ansatz quasi erst die Datenbank zu bitten Auskunft über Views und Tabellen zu geben und dann mit diesen Infos den Dump anzustoßen finde ich gut. Davon inspiriert habe ich mir ein Shellscript (liegt unter https://github.com/thammit/oxidshellhelper/blob/master/dumpwithoutviews.sh) gemacht. Das hier diskutierte Problem mit dem Passort auf der Kommandozeile stellt sich dort nicht, weil die Oxid-Konfiguration eingelesen wird.

    Gruß
    Ansgar

  • Kommentare geschlossen.