PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit DB-Restore per PHP


waldfee
22.07.2004, 10:05
Hallo,
ich erstelle per php eine mysqldump und das funktioniert auch einwandfrei. Nun möchte ich die Daten ebenfalls per php wieder einspielen lassen und benutze dafür folgenden code:
system("/usr/bin/mysql -u$db_user -p$db_passwort $db_name < $path$myfilename", $fp);
Pfad, passwort, filename, dbname und username stimmen alles. das mysqldump funktioniert auch mit genau den gleichen angaben. rechte sind auch auf 777.

nun habe ich irgendwo gelesen, dass es sein kann, dass der server den mysql-befehl nicht unterstützt, ist das möglich? leider stand nicht mehr dazu. Falls das das problem sein könnte, wie kann ich das ändern. Es handelt sich nämlich um einen privaten Server auf dem ich die Einstellungen ändern könnte..nur leider weiss ich nicht wo bzw. was?

Oder woran könnte es sonst liegen. Zu gross kann das sql-file mit knapp 100kb ja nicht sein! Vielleicht kann ich ja auch irgendwie eine erweiterte Fehlermeldung rauskriegen..das könnte mir ja schon helfen. Momentan weiss ich halt nur, dass das Restore net funzt.
Wäre für alle Tips dankbar! Grübel nämlich schon seit einem Tag darüber und komm absolut nicht weiter *verzweifelt guck* :(

Thanx a lot..waldfee

Mystics
22.07.2004, 13:31
So müsste eine Fehlerdatei (error.txt) erstellt werden:system("/usr/bin/mysql -u$db_user -p$db_passwort $db_name 2> $patherror.txt < $path$myfilename", $fp);

waldfee
22.07.2004, 13:59
hey,
danke..die error.txt wird erstellt, doch leider steht nix drin :(.
was könnte das heissen?

Mystics
22.07.2004, 14:15
Hm, dass kein Fehler aufgetreten ist?

Ändere mal den mysql-Pfad, dann sollte ein Fehler drin stehen.

Aber wenn die Datei wirklich nur 100kb groß ist, kannst du dafür auch phpMyAdmin nehmen.

waldfee
22.07.2004, 14:26
ja..das dacht ich mir...aber woran kanns denn dann liegen :(.
ich komm mir langsam echt blöd vor.
Wenn ich nen fehler reinbaue, krieg ich ne fehlermeldung und die hilfe in der txt-datei, das geht also.

klar theoretisch könnte ich das mit php-myadmin machen, bzw. direkt aufm server. hab ich auch probiert, das klappt auch mit dem normalen 'mysql datenbank<datei.sql' befehl.
Doch das Problem liegt darin, dass das System später in kleinen Firmen laufen soll, mit jeweils nem microserver. und dort sollen die Admins ihre daten sichern und eben auch selbst wieder einspielen können. Deshalb muss das ganze in die applikation integriert werden. mit dem erstellen des Backups klappt das ja auch problemlos..nur das 'doofe' restore funzt eben net.
also ich bin kein anfänger in der hinsicht..aber momentan fühl ich mich halt wie einer.

könnte mir vielleicht noch jemand nen lösungstipp geben oder mir auf die sprünge helfen. Vielleicht seh ich ja auch den Wald vor lauter Bäumen net..passiert.

nochmals danke.

waldfee
22.07.2004, 17:11
Doch Fehler in error.txt

Ich weiss nicht warum, aber nun erhalte ich doch nen fehler in der error.txt und zwar folgendes:
Enter password: ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)
Doch irgendwie werd ich daraus net schlau, denn ich benutze kein passwort. und wenn warum will er dass dann nicht beim mysqldump?
als passwort steht das normale rootpasswort drin ' '.und bei allem anderen gehts ja auch. muss ich hier irgendetwas besonderes setzten an rechten oder so?

Wäre wirklich toll wenn mir jemand weiterhelfen könnte, google nun schon seit stunden ohne erfolg. Vielleicht hatte ja schonmal jemand das gleiche problem.

waldfee

Mystics
22.07.2004, 17:56
Bist du sicher, dass du das Passwort angegeben hast?
Nur der User root reicht nicht, das Passwort muss auch angegeben werden.

waldfee
23.07.2004, 08:45
morgen,
ja als root stelle ich ja eigentlich die ganze zeit eine db-verbindung her und das funzt ja auch einwandfrei. und auch beim mysql dump nutze ich genau die gleichen angaben. beziehe die daten nämlich aus einer anderen datei...kann also eigentlich nicht sein, dass ich da was falsches eingegeben habe. dann müsste er nämlich die ganze zeit meckern.
ich bin momentan echt völlig ratlos..und das schon am frühen morgen.
bitte dringend um hilfe!!!

waldfee
23.07.2004, 10:12
So, ich habs hingekriegt.
Keine Ahnung warum, aber als ich root ein Passwort verpasst habe mit :

mysql>SET PASSWORD FOR root@"localhost" = PASSWORD('keks');
mysql>FLUSH PRIVILEGES;

funktionierte es auf einmal.Das komische dabei ist wirklich, dass er sonst nie ein passwort verlangt hat.
Also eventuell einfach einen neuen User anlegen mit allen Rechten, das funktioniert so:

mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'ein_passwort' WITH GRANT OPTION;

so hatte ich es nämlich als erstes ausprobiert. Vielleicht hilft es ja einem/einer anderen verzweifelten ;)

trotzdem danke für die bemühungen!