Dies funktioniert, wenn es im "Ausführen" -Fenster ausgeführt wird.mysqldump funktioniert nicht, wenn es in einer ASP .NET-Webanwendung als neuer Prozess ausgeführt wird
cmd.exe /K mysqldump --add-drop-database --add-drop-table --user=root --password=thepassword --databases theDatabase > C:\Backup\theBackup.sql
Derselbe Befehl, wenn ich versuche, von meiner Webanwendung durch Aufruf eines externen Prozesses auszuführen, schlägt jedoch fehl.
Hier ist der Code:
ProcessStartInfo processInfo = new ProcessStartInfo("cmd.exe", @"/K mysqldump --add-drop-database --add-drop-table --user=root --password=thepassword --databases theDatabase > C:\Backup\theBackup" + ".sql");
Process p = Process.Start(processInfo);
Dies ist, was ich ...
alt text http://img40.imageshack.us/img40/8121/mysqldumperror.gif
Interessanterweise ist die Datei - theBackup.sql - wird erstellt, ist aber leer.
Es ist kein Problem mit der Umgebungsvariablen PATH; Der MySql-Bin-Verzeichnispfad, der mysqldump enthält, wird der Umgebungsvariablen PATH hinzugefügt. Um dies zu überprüfen, ob ich die Eingabeaufforderung zu öffnen, navigieren Sie oben auf den Pfad in dem Screenshot erwähnt und geben Sie mysqldump Befehl manuell, es erkennt den Befehl ... wie folgt ...
alt text http://img40.imageshack.us/img40/6879/mysqldumppathproper.gif
Das Problem ist mysqldump spezifisch, da das folgende Stück Code funktioniert
ProcessStartInfo processInfo = new ProcessStartInfo("cmd.exe", "/K ping stackoverflow.com");
Was ist hier falsch?
weder gearbeitet :-( – Sameet
Haben Sie sicherstellen, dass Sie den Pfad notiert oder entkam sonst keine Leerzeichen drin? (Nur hinzugefügt, dass auf die Antwort) –
mit der gearbeitet Vollqualifizierter Pfad - mit ausweichenden Leerzeichen :-) Danke. – Sameet