Hey,
ich habe ein Problem, und zwar versuche ich, einen mysqldump.exe-Aufruf aus Schönheitsgründen in einen Prozess auszulagern bzw. einen Prozess zu erschaffen, der mit Parametern mysqldump.exe + Parameter aufruft und verarbeitet.
Das Problem ist aber, dass ich, wenn ich entweder den kompletten Dateipfad mit Parametern in den File-Parameter des Prozesses oder die Parameter in den Para-Parameter (wtf...) des Prozesses geschrieben hab oder alles in die Process.StartInfo-Klasse geschrieben hab und immer eine Win32Exeption bekommen hab, die lt. Beschreibnung sagt, das die Date nicht existiert, obwohl, wenn ich den kompletten Befehl in die cmd.exe schreibe alles wie geplant verläuft.
Hier mal der Code, da steht letzten endes alles drin, was ich mal versucht hab (Auszug):
Die MsgBox() Sachen sind eigentlich nur zum Debuggen gedacht, damit ich die Strings, die entstehen, betrachten kann.
Wäre cool, wenn jmd ne Idee hätte, wie ich dieses Problem lösen könnte (und ja, ich habe es auch mal mit Shell() probiert).
Vielen Dank im Voraus:)
ich habe ein Problem, und zwar versuche ich, einen mysqldump.exe-Aufruf aus Schönheitsgründen in einen Prozess auszulagern bzw. einen Prozess zu erschaffen, der mit Parametern mysqldump.exe + Parameter aufruft und verarbeitet.
Das Problem ist aber, dass ich, wenn ich entweder den kompletten Dateipfad mit Parametern in den File-Parameter des Prozesses oder die Parameter in den Para-Parameter (wtf...) des Prozesses geschrieben hab oder alles in die Process.StartInfo-Klasse geschrieben hab und immer eine Win32Exeption bekommen hab, die lt. Beschreibnung sagt, das die Date nicht existiert, obwohl, wenn ich den kompletten Befehl in die cmd.exe schreibe alles wie geplant verläuft.
Hier mal der Code, da steht letzten endes alles drin, was ich mal versucht hab (Auszug):
VB.NET-Quellcode
- Option Explicit On
- Imports Import_Export.Functions
- Imports MySql.Data.MySqlClient
- Public Class Form1
- Dim Pfad As String
- Dim User As String
- Dim Recover As String
- Dim Pass As String
- Dim Host As String
- Dim Path As String
- Dim DB1 As String
- Dim DB2 As String
- Dim DB3 As String
- Dim Pfad_DB1 As String
- Dim Pfad_DB2 As String
- Dim Pfad_DB3 As String
- Dim Path_DB1 As String
- Dim Path_DB2 As String
- Dim Path_DB3 As String
- Dim cmd1 As String
- Dim cmd2 As String
- Dim cmd3 As String
- Dim Dump As String
- Dim Reco As String
- Dim Pro_import As New Process()
- Dim Pro_export As New Process()
- Function Setup() '.ini-Variablen holen
- Label8.Text = "Hinweis: Das Programm benötigt nur einen einzigen Dateinamen." + vbNewLine + " Dieser kann z.B. ein Datum oder eine Versionsangabe enthalten." + vbNewLine + " Um die Dateien zu unterscheiden, hängt das Programm die Datenbanknamen, " + vbNewLine + " wie in der der Konfiguration angegeben, an."
- INIDatei.Pfad = "C:\Users\Laurenz\AppData\Roaming\Import_Export\setup.ini"
- If Not My.Computer.FileSystem.FileExists(INIDatei.Pfad) Then
- MessageBox.Show("Die erforderliche setup.ini existiert entweder noch nicht, oder wurde versehentlich gelöscht. Bitte tragen Sie in den Einstellungen die jeweiligen Daten zur Wiederherstellung der Datei ein.", "Fehler")
- Return Nothing
- Exit Function
- End If
- User = INIDatei.WertLesen("Con", "User")
- Pass = INIDatei.WertLesen("Con", "Pass")
- Host = INIDatei.WertLesen("Con", "Host")
- DB1 = INIDatei.WertLesen("DB", "DB1")
- DB2 = INIDatei.WertLesen("DB", "DB2")
- DB3 = INIDatei.WertLesen("DB", "DB3")
- Chb_DB1.Text = Chb_DB1.Text & " (" & INIDatei.WertLesen("DB", "DB1") & ")"
- Chb_DB2.Text = Chb_DB2.Text & " (" & INIDatei.WertLesen("DB", "DB2") & ")"
- Chb_DB3.Text = Chb_DB3.Text & " (" & INIDatei.WertLesen("DB", "DB3") & ")"
- Dump = INIDatei.WertLesen("MySQL", "mysqldump.exe")
- Reco = INIDatei.WertLesen("MySQL", "mysql.exe")
- Return Nothing
- End Function
- Function Query(Methode)
- Pfad = Txt_Save.Text
- If (Methode = 1) Or (Methode = 2) Then 'Methode 1 --> Export/Backup; Methode 2 --> Import/Recovery
- Else
- MessageBox.Show("Fehlerhaftes Argument in der Abfragenfunkton!", "Fehler")
- Return 900
- Exit Function
- End If
- If (Pfad = Nothing) Then
- MessageBox.Show("Bitte geben Sie eine Datei zum Speichern und exportieren der Datenbank an!", "Fehler: Keine Datei angegeben")
- Return 901
- Exit Function
- End If
- If (Methode = 1) Then
- Pfad_DB1 = Pfad.Substring(0, Pfad.IndexOf(".")) + "_" + INIDatei.WertLesen("DB", "DB1") + ".sql"
- Pfad_DB2 = Pfad.Substring(0, Pfad.IndexOf(".")) + "_" + INIDatei.WertLesen("DB", "DB2") + ".sql"
- Pfad_DB3 = Pfad.Substring(0, Pfad.IndexOf(".")) + "_" + INIDatei.WertLesen("DB", "DB3") + ".sql"
- MessageBox.Show(Pfad_DB1 & vbNewLine & Pfad_DB2 & vbNewLine & Pfad_DB3 & vbNewLine & vbNewLine & DB1 & vbNewLine & DB2 & vbNewLine & DB3)
- If (Chb_DB1.Checked = True) Then
- cmd1 = Dump + " -e -u" & User & " -p" & Pass & " -h" & Host & " " & DB1 & " > " & Pfad_DB1 & " "
- 'Pro_export.StartInfo.WorkingDirectory = Dump
- 'Pro_export.StartInfo.FileName = "mysqldump.exe"
- 'Pro_export.StartInfo.Arguments = " -e -u" & User & " -p" & Pass & " -h" & Host & " " & DB1 & " > " & Pfad_DB1 & " "
- 'Pro_export.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
- Pro_export.Start("C:\xampp\mysql\bin\mysqldump.exe -e -urecovery -precovery_digikam -hlocalhost digikam > C:\Users\Laurenz\Documents\FA_Tests\1_digikam_digikam.sql")
- MsgBox(cmd1)
- Shell("C:\xampp\mysql\bin\mysqldump.exe -e -urecovery -precovery_digikam -hlocalhost digikam > C:\Users\Laurenz\Documents\FA_Tests\1_digikam_digikam.sql")
- Return 100
- End If
- If (Chb_DB2.Checked = True) Then
- cmd2 = "-e -u" & User & " -p" & Pass & " -h" & Host & " " & DB2 & " > " & Pfad_DB2 & " "
- Pro_export.Start(Dump, cmd2)
- Return 101
- End If
Die MsgBox() Sachen sind eigentlich nur zum Debuggen gedacht, damit ich die Strings, die entstehen, betrachten kann.
Wäre cool, wenn jmd ne Idee hätte, wie ich dieses Problem lösen könnte (und ja, ich habe es auch mal mit Shell() probiert).
Vielen Dank im Voraus:)