Datenbank importieren (>3 mb)?

  • Hallo,


    ich will auf meinem HeimPC mal etwas am Blog werkeln.

    Also Datenbank lokal auf dem Rechner gespeichert, und ich wollte sie auf mein Xampp Paket laden.

    Bei phpmyadmin ist eine Uploadgrenze von 2mb.
    Meine Datenbank ist gzipt über 3 mb.


    Wie kann ich das deichseln?

    Danke vorab

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • alSo,

    ich habe nun den mysqldumper installiert.

    ich habe bei meinem hoster eine ältere Wordpress Version. Ich vermute 2.0.2

    Lokal habe ich 2.0.5.

    Mein Hoster hat auf dem Server php 4 und mysql 4 (bin mir nicht ganz sicher)
    Lokal habe ich php 5 und mysql 5.

    Die Datenbank habe ich mit dem Wordpress Plugin erstellen lassen und auf den Desktop karren lassen.

    Jetzt habe ich den Mysqldumper lokal installiert und die 4mb große Datei eingespielt.

    Beim Einspeisen erhalte ich folgende Fehlermeldung:

    INSERT INTO `wp_categories` VALUES (1, 'sonstiges', 'sonstiges', 'Alles was sonst nirgends passt.', 0, 591) ; INSERT INTO `wp_categories` VALUES (31, 'webmaster', 'webmaster', '', 0, 3) ; INSERT INTO `wp_categories` VALUES (5, 'technik', 'technik', '', 0, 101) ; INSERT INTO `wp_categories` VALUES (7, 'wissenschaft', 'studien', '', 0, 31) ; INSERT INTO `wp_categories` VALUES (9, 'tutorials', 'tutorials', '', 1, 35) ; INSERT INTO `wp_categories` VALUES (10, 'sport', 'sport', '', 0, 15) ; INSERT INTO `wp_categories` VALUES (28, 'software', 'software', '', 0, 12) ; INSERT INTO `wp_categories` VALUES (25, 'präsentieren', 'praesentieren', '', 32, 17) ; INSERT INTO `wp_categories` VALUES (27, 'innovation', 'innovation', '', 32, 4) ; INSERT INTO `wp_categories` VALUES (32, 'personal development', 'personal-development', '', 0, 5) ; INSERT INTO `wp_categories` VALUES (13, 'human resources', 'human-resources', '', 15, 21) ; INSERT INTO `wp_categories` VALUES (15, 'wirtschaft', 'wirtschaft', '', 0, 40) ; INSERT INTO `wp_categories` VALUES (19, 'selbstmanagement', 'selbstmanagement', '', 32, 31) ; INSERT INTO `wp_categories` VALUES (21, 'dienste', 'dienste', '', 0, 13) ; INSERT INTO `wp_categories` VALUES (24, 'blogging', 'blogging', '', 31, 18) ; INSERT INTO `wp_categories` VALUES (29, 'php', 'php', '', 31, 4) ; INSERT INTO `wp_categories` VALUES (33, 'politik', 'politik', '', 0, 0) ; # # End of data contents of table `wp_categories` # -------------------------------------------------------- # -------------------------------------------------------- # Table: `wp_comments` # -------------------------------------------------------- # # Delete any existing table `wp_comments` # DROP TABLE IF EXISTS `wp_comments`; # # Table structure of table `wp_comments` # CREATE TABLE `wp_comments` ( `comment_ID` bigint(20) unsigned NOT NULL auto_increment, `comment_post_ID` int(11) NOT NULL default '0', `comment_author` tinytext NOT NULL, `comment_author_email` varchar(100) NOT NULL default '', `comment_author_url` varchar(200) NOT NULL default '', `comment_author_IP` varchar(100) NOT NULL default '', `comment_date` datetime NOT NULL default '0000-00-00 00:00:00', `comment_date_gmt` datetime NOT NULL default '0000-00-00 00:00:00', `comment_content` text NOT NULL, `comment_karma` int(11) NOT NULL default '0', `comment_approved` enum('0','1','spam') NOT NULL default '1', `comment_agent` varchar(255) NOT NULL default '', `comment_type` varchar(20) NOT NULL default '', `comment_parent` bigint(20) NOT NULL default '0', `user_id` bigint(20) NOT NULL default '0', PRIMARY KEY (`comment_ID`), KEY `comment_approved` (`comment_approved`), KEY `comment_post_ID` (`comment_post_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ; # # Data contents of table `wp_comments` # INSERT INTO `wp_comments` VALUES (1, 1, 'Mr WordPress', '', 'http://wordpress.org/', '', '2006-04-01 20:42:11', '2006-04-01 18:42:11', 'Hallo, das hier ist ein Kommentar.
    Um einen Kommentar zu bearbeiten, musst Du Dich anmelden und zur Übersicht der Beiträge gehen. Dort bekommst Du dann die Gelegenheit sie zu verändern, oder zu löschen.', 0, '1', '', '', 0, 0) ;
    MySQL meldet:

    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 '; INSERT INTO `wp_categories` VALUES (31, 'webmaster', 'webmaster', '', 0, 3) ' at line 1


    --------------------------------------------------------------

    Wie würdet ihr jetzt vorgehen, damit ich das noch hinbekomme?

    Danke vorab.

  • lokal wp2.0.5 deinstallieren, 2.0.2 installieren, datenbank importieren und auf 2.0.5 updaten ;)

    vG

    Arno

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • Ziel:
    Backup meines Blogs (Wordpress 2.0.2) erstellt und auf den Rechner geschickt.
    Mein Blog als Ordner vom Webspace komplett runterkopiert.
    Lokal auf den Apache geladen.
    Neue Datenbank angelegt.
    Wp-config angepasst.
    Wordpress (auch wieder 2.0.2 aus dem Ordner vom Webspace) installiert.
    Das Backup (6,4mb) als gz.sql in den Backup-Ordner des MySql Dumper kopiert.
    Im MySql-Dumper die Datenbank gewählt, das Backup gewählt und wiederherstellen gedrückt.

    Ergebnis:
    Mein Theme ist drin.

    MySql Error (im MySql Dumper angezeigt):
    INSERT INTO `wp_categories` VALUES (1, 'sonstiges', 'sonstiges', 'Alles was sonst nirgends passt.', 0, 593) ; INSERT INTO `wp_categories` VALUES (31, 'webmaster', 'webmaster', '', 0, 3) ; INSERT INTO `wp_categories` VALUES (5, 'technik', 'technik', '', 0, 101) ; INSERT INTO `wp_categories` VALUES (7, 'wissenschaft', 'studien', '', 0, 31) ; INSERT INTO `wp_categories` VALUES (9, 'tutorials', 'tutorials', '', 1, 35) ; INSERT INTO `wp_categories` VALUES (10, 'sport', 'sport', '', 0, 15) ; INSERT INTO `wp_categories` VALUES (28, 'software', 'software', '', 0, 12) ; INSERT INTO `wp_categories` VALUES (25, 'präsentieren', 'praesentieren', '', 32, 17) ; INSERT INTO `wp_categories` VALUES (27, 'innovation', 'innovation', '', 32, 4) ; INSERT INTO `wp_categories` VALUES (32, 'personal development', 'personal-development', '', 0, 5) ; INSERT INTO `wp_categories` VALUES (13, 'human resources', 'human-resources', '', 15, 21) ; INSERT INTO `wp_categories` VALUES (15, 'wirtschaft', 'wirtschaft', '', 0, 40) ; INSERT INTO `wp_categories` VALUES (19, 'selbstmanagement', 'selbstmanagement', '', 32, 32) ; INSERT INTO `wp_categories` VALUES (21, 'dienste', 'dienste', '', 0, 14) ; INSERT INTO `wp_categories` VALUES (24, 'blogging', 'blogging', '', 31, 18) ; INSERT INTO `wp_categories` VALUES (29, 'php', 'php', '', 31, 4) ; INSERT INTO `wp_categories` VALUES (33, 'politik', 'politik', '', 0, 0) ; # # End of data contents of table `wp_categories` # -------------------------------------------------------- # -------------------------------------------------------- # Table: `wp_comments` # -------------------------------------------------------- # # Delete any existing table `wp_comments` # DROP TABLE IF EXISTS `wp_comments`; # # Table structure of table `wp_comments` # CREATE TABLE `wp_comments` ( `comment_ID` bigint(20) unsigned NOT NULL auto_increment, `comment_post_ID` int(11) NOT NULL default '0', `comment_author` tinytext NOT NULL, `comment_author_email` varchar(100) NOT NULL default '', `comment_author_url` varchar(200) NOT NULL default '', `comment_author_IP` varchar(100) NOT NULL default '', `comment_date` datetime NOT NULL default '0000-00-00 00:00:00', `comment_date_gmt` datetime NOT NULL default '0000-00-00 00:00:00', `comment_content` text NOT NULL, `comment_karma` int(11) NOT NULL default '0', `comment_approved` enum('0','1','spam') NOT NULL default '1', `comment_agent` varchar(255) NOT NULL default '', `comment_type` varchar(20) NOT NULL default '', `comment_parent` bigint(20) NOT NULL default '0', `user_id` bigint(20) NOT NULL default '0', PRIMARY KEY (`comment_ID`), KEY `comment_approved` (`comment_approved`), KEY `comment_post_ID` (`comment_post_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ; # # Data contents of table `wp_comments` # INSERT INTO `wp_comments` VALUES (1, 1, 'Mr WordPress', '', 'http://wordpress.org/', '', '2006-04-01 20:42:11', '2006-04-01 18:42:11', 'Hallo, das hier ist ein Kommentar.
    Um einen Kommentar zu bearbeiten, musst Du Dich anmelden und zur Übersicht der Beiträge gehen. Dort bekommst Du dann die Gelegenheit sie zu verändern, oder zu löschen.', 0, '1', '', '', 0, 0) ;
    MySQL meldet:

    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 '; INSERT INTO `wp_categories` VALUES (31, 'webmaster', 'webmaster', '', 0, 3) ' at line 1


    Wie krieg ich das gedeichselt?

    Danke vorab

  • Das Problem ist ziemlich sicher Versionssprung bei MySQL. Version 5 scheint im geforderten Syntax strenger zu sein als die 4er. Hatte mit meinen Plugin deshalb auch schon meine Probleme.
    Suche am Besten mal nach einen MySQL-Forum und stelle dort die Frage. Ich denke für die MySQL-Profis dürften sofort wissen woran es hapert.

    For Daisy - Werde Teil des Pixelkunstwerks

  • Das Problem ist ziemlich sicher Versionssprung bei MySQL. Version 5 scheint im geforderten Syntax strenger zu sein als die 4er.


    Nein, das Problem ist, dass das WordPressPlugin ein Leerzeichen zwischen die schließende Klammer und das Semikolon schreibt.
    Das ist kein offizieller Syntax und deshalb knallt es da beim Einlesen mit MySQLDumper. Das wirft den internen Parser völlig aus der Bahn, denn er erkennt das Ende eines SQL-Befehls anhand der Zeichenkette );, die es hier aber nicht gibt.

    So:

    Zitat

    INSERT INTO `wp_categories` VALUES (31, 'webmaster', 'webmaster', '', 0, 3) ; <-- Leerzeichen


    ist es falsch und so:

    Zitat

    INSERT INTO `wp_categories` VALUES (31, 'webmaster', 'webmaster', '', 0, 3); <-- kein Leerzeichen


    wäre es richtig.
    Ein kleiner Fehler mit großer Wirkung. ;)

    Das Problem ist dem ehemaligen Entwickler auch gemeldet worden, aber der fühlt sich nicht mehr zuständig und bis heute hat das keiner im WP-Plugin korrigiert. Dabei wäre das nur ein einzige winzige Stelle im Code, die zu ändern wäre.

    Wäre das Leerzeichen weg, so könnte das per WP-Backup erstellte Backup problemlos mit MySQLDumper wieder eingespielt werden.

  • Das Problem ist dem ehemaligen Entwickler auch gemeldet worden, aber der fühlt sich nicht mehr zuständig und bis heute hat das keiner im WP-Plugin korrigiert. Dabei wäre das nur ein einzige winzige Stelle im Code, die zu ändern wäre.

    Wenn Du's weisst, und das Plugin derzeit ohne Entwickler dasteht, übernimm Du diese Aufgabe doch und korrigiere das Plugin ;)

    vG

    Arno

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • Ich verbringe bereits nahezu meine gesamte Freizeit mit der Entwicklung und dem Support für MySQLDumper. Da verspüre ich nicht unbedingt Lust noch weiteren Support für andere Projekte zu geben. :-?

    Ich wäre aber bereit die Stelle einmalig zu finden und zu korrigieren. Sende mir den Code des PlugIns an admin at mysqldumper.de und ich schaue mal rein.

  • Habs schon gefunden. ;)
    In der Datei backuprestoreAdmin.php muss Zeile 104:

    Code
    $sql_statements .= " \n" . $entries . implode(', ', $values) . ') ;';


    ausgetauscht werden gegen

    Code
    $sql_statements .= "\n" . $entries . implode(', ', $values) . ');';



    Und schon klappt es künftig mit validen Backups. ;)

    Wobei ich beim Durchsehen des Codes nun gesehen habe, dass das PlugIn die maximale Laufzeit von PHP-Skripten nicht berücksichtigt! Ist die Datenbank groß genug, so kann hiermit kein vollständiges Backup der Datenbank mehr angelegt werden, da das Skript in den Timeout rennt.
    Daher empfehle ich lieber den MySQLDumper. Nicht aus Eigennutz, sondern um euch unvollständige Backups zu ersparen. ;)

  • Nein, das Problem ist, dass das WordPressPlugin ein Leerzeichen zwischen die schließende Klammer und das Semikolon schreibt.
    Das ist kein offizieller Syntax [...]

    Das wage ich zu bezweifeln. Wenn dem so wäre, müsste man bei folgender Eingabe ja einen Syntaxfehler bekommen:

    SQL
    SELECT 1+1              ;

    Das Leerzeichen ist ein "Internal Field Separator" (IFS), d.h. ein Zeichen, dass Syntax-Elemente voneinander trennt, und der darf normalerweise überall stehen. Das Semikolon zeigt das logische Zeilenende an und darf auch durch einen IFS abgetrennt sein.

    Oder gibt es eine Stelle in der MySQL-Dokumentation, die etwas anderes behauptet?

  • Gut, meine Aussage "ist kein offizieller Syntax" nehme ich auch gerne zurück. Ich habe in der Doku weder etwas dafür noch dagegen gefunden.
    Die Diskussion ist aber auch müßig, denn das ist nicht das Problem. ;)

    Ohne meine Änderung von oben schreibt das Script pro Datensatz 2 unnötige Leerzeichen in das Backup, die rein gar nichts bewirken und einfach nur Speicherplatz verbrauchen. Bei 50.000 Datensätzen sind das schon 100.000 überflüssige Leerzeichen, die letzlich die Größe des Backupfiles unnötig vergrößern. Das verbietet sich eigentlich von alleine.

    Abgesehen davon schreibt kein anderes Backupprogramm ein Leerzeichen zwischen die schließende Klammer der Insert-Anweisung und dem abschließenden Semikolon - auch das Konsolen-mysqldump nicht. Es macht schlichtweg keinen Sinn.

    Und bitte - ich habe die Stelle gern gefunden und verbessert. Im Posting davor wurde ja danach gefragt.:wink:

  • Danke für die Hilfe Daniel.

    Ich benutze den Dumper jetzt schon seit der ersten wirklich lauffähigen Version (war das noch 2005 oder doch schon 2006?) und empfehle ihn ausdrücklich. Vor allem sollte man Backups damit nicht nur einspielen, sondern auch erstellen. Ich habe damit auch bereits richtig große Backups > 100 MB problemlos einspielen können. Gehört bei mir zum Standard jeder Webpräsenz auf der eine Datenbank zum Einsatz kommt.

    Ende des Werbetextes ;-)

  • Jau, da gebe ich Dir völlig recht. Aber vllt. könnte man doch mit einer kleinen Regex doch sicherstellen, dass bei dieser seltsamen, aber anscheinend korrekten Syntax das Einlesen der Daten doch funktioniert.

    Bzgl. Speicher sparen: Dann könnte man auch die (meisten) physikalischen Zeilenumbrüche weglassen. ;)

    Hab mir übrigens den Dumper mal angeschaut, hat einen guten ersten Eindruck hinterlassen. Allerdings musste ich die erzeugte Datei zweimal entpacken.

    Ach ja, a propos Timeout: Man kann den PHP-Timeout auch beliebig erhöhen (wenn PHP nicht im Safe Mode läuft): PHP: set_time_limit - Manual

    Einmal editiert, zuletzt von mastermind (19. März 2007 um 00:42)

  • Aber vllt. könnte man doch mit einer kleinen Regex doch sicherstellen, dass bei dieser seltsamen, aber anscheinend korrekten Syntax das Einlesen der Daten doch funktioniert.


    Das habe ich zunächst überlegt, diesen Gedanken dann aber wieder verworfen. Unser Parser parst sehr unkonventionell (also nicht per RegEX), ist speziell auf SQL-Dumps ausgerichtet und dadurch sehr schnell (da kommt phpmyadmin nicht mit *g*). Hier eine weitere Überprüfung auf Leerzeichen einzubauen kostet in der Summe sehr viel Zeit und würde die Dauer einer Wiederherstellung verlängern. Und nur für ein einziges Programm, welches hier Leerzeichen einfügt, mache ich das nicht. Da stehen Kosten und Nutzen in keinem sinnvollen Verhältnis. Einfacher und effektiver ist es, wenn die WP-User den oben geposteten Bugfix in ihrem Script vornehmen.

    Zitat

    Bzgl. Speicher sparen: Dann könnte man auch die (meisten) physikalischen Zeilenumbrüche weglassen. ;)


    Nein, kann man nicht. ;)
    Damit das Restore mit beliebig großen Backupdateien funktioniert und gleichzeitig das Zeitlimit berücksichtigt werden kann, liest der Dumper das Dump zeilenweise ein und nicht am Stück. Wenn keine Zeilenumbrüche enthalten wären, wäre das komplette Backup in einer Zeile und so würden zahlreiche Beschränkungen (Speicherlimit, Ausführungszeit, usw..) hier zum Exitus führen. Ich habe da so meine Erfahrungen. ;)

    Zitat

    Ach ja, a propos Timeout: Man kann den PHP-Timeout auch beliebig erhöhen (wenn PHP nicht im Safe Mode läuft): PHP: set_time_limit - Manual


    Du sagst es: wenn PHP nicht im safe_mode läuft, bzw. gibt es auch andere Möglichkeiten diesen Wert zu beeinflussen, auch wenn der safe mode aus ist.
    Es gibt Server, da steht dort eine -1 drin und die Steurung erfolgt über ganz andere Stellen. Ich habe mich im Rahmen der Entwicklung intensiv mit Serverkonfigurationen und Limits beschäftigt. Da erzählst Du mir nichts Neues. ;)

    Der Dumper funktioniert aber nahezu unter jeder Serverkonfiguration. Ferner halte ich es nicht für sinnvoll einer vom Hoster gesetzten Einschränkung entgegegenzuwirken.
    Der Dumper nähert sich intelligent an die zur Verfügung gestellten Resourcen an und stellt sich automatisch auf die Geschwindigkeit des Servers ein. Das Funktionsprinzip ist so wie es ist erprobt und hat sich in der Praxis perfekt bewährt.

    P.S.: Wieso bekomme ich bei Antworten keine Benachrichtigungsemail obwohl das in meinem Profil eingestellt ist? Ist das hier generell deaktiviert?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!