[PHP] Importieren von einem Backup der DB

DaS_ScHaF

Lt. Commander
Registriert
Feb. 2005
Beiträge
1.130
Hi,
haben nun endlich für unser Schulforum einen richtigen Server, von einen Freund gesponsort. Nun möchte ich den kompletten DB Inhalt vom pytal host zum neuen kopieren, sodass alle Foreneinträge, -user und -einstellungen beibehalten werden. Bei pytal habe ich bereits im phpmyadmin auf exportieren geklickt und nun eine gzip datei als backup bei mir. Nun habe ich eben versucht diese auf den neuen server zu importieren und es kommt folgender Fehler:
Code:
Fehler

SQL-Befehl : 

CREATE DATABASE `usr_web5_1` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci

MySQL meldet:

#1064 - You have an error in your SQL syntax near 'DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci' at line 1

Was hat das zu bedueten und wie bekomm ich nun die komplette Datenbank in das neue Verzeichnis? Die Leute würden mich lünchen wenn ich denen sagen würde das wir wieder alles neu machen müssten *g*

In den ersten 10 Zeilen hab ich bereits den vorherigen Namen durch den neuen ersetzt, das hab ich mir schon gedacht das man das ändern müsste. Der neue Server besitzt confixx, aber was muss ich denn da nun schritt für schritt genau machen? So ein einspielen von einem Backup hab ich noch nicht gemacht und habs mir leichter vorgestellt =)

Habe dort bereits eine Datenbank angelegt, so wurde eine Tabelle mit 'test' und eine mit meinen benutzernamen angelegt. Aber was mir grad aufgefallen, auf der startseite von phpmyadmin ist unter exportieren kein link für importieren, habe es vorher mit dem sql-befehl versucht - kein erfolg.


Er meckert ja über Zeile 1, hier diese Zeile:
CREATE DATABASE `xxx` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE xxxx;

Was muss nun wohin? Use ist wohl, die tabelle die er nutzen soll und der Rest?
 
hmm... ich vermute mal, dass du hier unterschiedliche MySQL-Versionen einsetzt. Deine Create-Anweisung versteht MySQL afaik erst ab Version 4.1, daher solltest du beim Exportieren der Daten in phpMyAdmin den entsprechenden Kompatibilitätsmodus wählen (SQL-Export-Kompatibilität: MYSQL40 bzw. MYSQL323, je nach dem welche Version du einsetzt).
 
Wie groß ist denn die Datenbank - selbst wenn phpmyadmin den ersten Teil mitmacht wird das script irgendwann abbrechen wenn es zu viele Daten (> 2MB) sind.

Abgesehen davon wird phpmyadmin bei größeren Dateien auch ziehmlich langsam. Ich habe mir daher mal ein eigenes script gebastelt welches einen shell-Befehl aufruft und mit dem ich "alte" und "neue" mysql-dumps einlesen (es kommt auf das Charset an!).

PHP:
<?php
							
							$command = "";
							$filesuffix = trim(substr($_SESSION['filename'],strpos($_SESSION['filename'],"."),10));

							if ($filesuffix == '.sql')
								$_SESSION['compression'] = FALSE;
							else if ($filesuffix == '.gz' || $filesuffix == '.zip' || $filesuffix == '.gzip')							
								$_SESSION['compression'] = TRUE;


							if ($_SESSION['compression'])
								{
								$command = "/bin/gunzip -c ".$backupdir.$_SESSION['filename']." | ";
								}

							$command.= "/usr/bin/mysql --default-character-set=".$_SESSION['charset']." --user=".$_SESSION['dbuser'];
							$command.= " --password=\"".$_SESSION['dbpasswd']."\"";
							$command.= " --host=".$_SESSION['dbhost']." ";
							$command.= $_SESSION['newdatabase'];

							if (!$_SESSION['compression'])
								{
								$command.= " < ".$backupdir.$_SESSION['filename'];
								}

							system($command,$error);
							if ($error==0)
								echo "<b>Die Datenbank wurde erfolgreich wiederhergestellt!<br><br>";
							else 
								echo "<br>Es ist ein Fehler aufgetreten!<br><br>Bitte überprüfen Sie Ihre Einstellungen und schalten Sie eventuell die Kompression in den Grundeinstellungen aus.<br><br>";
							
							?>
 
Hi,
beide Server haben untersch. PHP Versionen, somit ging die eigene Backupfunktion nicht richtig. Ich habe es nun mit MySQLDumper geschafft alle Datenbanken sachgemäß zu imporiteren, in dem Forum sind alle Threads,Post und Boards enthalten.
Alle User sind zwar auch mit übernommen worden, aber anscheinend ohne Passwort bzw. wurden die Passwörter verdreht o.ä. Keiner kann sich mit seinen Daten einloggen, so müsste jeder einzelne das passwort neu anfordern und erstmal alles umstellen. Das möcht ich meinen Leuten vorerst nicht zumuten.
 
Lass dir mit phpadmin eine Textdatei ausgeben. Dann kannst du sie mit Editor öffnen und einzelne Teile rauskopieren. Mach immer so zwei bis drei Tabellen und füge sie dann per SQL-Anweisung auf dem neuen Server ein. Habe ich mit meiner 6 MB Datenbank auch gemacht und ging recht flott vonner Hand.
 
Wenn dann müsste ich ja nur den Teil mit den Benutzer rauskopieren, oder?
Mit php hab ich noch nicht so oft direkt gearbeitet :) Ein größreres Problem ist ja das beide Server untersch. PHP Version haben ...
 
Zuletzt bearbeitet:
Ein größreres Problem ist ja das beide Server untersch. PHP Version haben ...
Das ist überhaupt kein Problem. PHP4 und PHP5 sind ohne Probleme kompatibel zueinander.

Probleme wirst du haben, wenn sich die MySQL Versionen (3, 4 und aktuell 5) unterscheiden - halt beim Import/Export. Welche Version hat der alte Server, welche der neue?
 
Diesen Server nennst du "neu"? Ach herjee :D

Du kannst das Problem beheben, indem du überall das hier raus nimmst (am besten mit nem Texteditor):

DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci

Sowas kennt MySQL 3 nicht, daher gibts auch den Fehler. Allerdings solltet ihr auf eurem "neuen" Server die Version einfach mal aktualisieren ... :D
 
Naja "neu" deshalb, weil darauf alle daten verschoben werden sollen. Bekommen den eben von nem Kumpel gesponsort, und nen geschenkten Gaul schaut man bekanntlich nicht ins Maul :-)
 
Also das geht irgendwie auch nicht. Ich dreh hier echt noch durch... Mein Kumpel meinte man könne wohl den Server updaten lassen auf eine neuere Vers. Das müsste ja dann auch alle Probleme beheben!? Muss der dann auf derselben Vers. laufen wie der "alte" oder darf der ruhig eine neuere haben und ist abwärtskompatibel ?!
 
Oh doch, das geht. Nur musst du halt alles MySQL5-Spezifische (sind zum Großteil die Angaben zur COLATION und CHARSET) komplett weg nehmen.

Oder mit dem Tool MySQLDumper arbeiten ... das macht solche Sachen automatisch. Siehe: http://www.mysqldumper.de/
 
Haha, genau das geht eben nicht. MySQLDumper hatte ich bereits probiert, zwar erstellt er alle Tabellen richtig. Aber die Benutzerpasswörter des Forum werden nicht übernommen, alles andere wie Benutzerrechte, Threads, Posts etc werden alle korrekt übernommen. Nur die Passwörter ignoriert er anscheinend!
 
Hmm schau mal den Screenshot an.. hast du das schon probiert?

David
 

Anhänge

  • MySQL323.PNG
    MySQL323.PNG
    28,9 KB · Aufrufe: 193
Hm nein, kenn mich mit php noch so gut wie gar nicht aus. Weiss wie ich nen php-forum etc installiere aber mehr auch nicht :D
Werds mal testen!

*UPDATE*
Also so funktioniert das importieren, aber wiedermal überträgt er nicht die Passwörter! Habe auch mal die user datenbank einzeln importiert, auch ohne erfolg :-/
 
Zuletzt bearbeitet:
DaS_ScHaF schrieb:
Hm nein, kenn mich mit php noch so gut wie gar nicht aus. Weiss wie ich nen php-forum etc installiere aber mehr auch nicht :D
Werds mal testen!

*UPDATE*
Also so funktioniert das importieren, aber wiedermal überträgt er nicht die Passwörter! Habe auch mal die user datenbank einzeln importiert, auch ohne erfolg :-/
Versuch mal, die Hashes direkt rüber zu kopieren!

David
 
Zurück
Oben