MySql Befehl mittels vbs funktioniert nur dann wenn ich keine Befehle mit angebe. Was mache ich Falsch?
Hallo,
ich habe ein Problem mit einem vbs Skript das ich derzeit am Programmieren bin.
Ich bin derzeit dabei ein vbs-Skript zu schreiben das alle MySql Dumps aus einem Ordner in die Datenbank schreibt.
Der Befehl um den Dump in die Datenbank zu spielen funktioniert einwandfrei. Nur der Befehl "CREATE SCHEMA " will beim besten willen nicht funktionieren.
Wo liegt hier der Fehler?
Wenn ich den Fehlerhaften Befehl wie folgt ändere, funktioniert er und ich bekomme eine offene Verbindung zum MySql.
ich habe ein Problem mit einem vbs Skript das ich derzeit am Programmieren bin.
Ich bin derzeit dabei ein vbs-Skript zu schreiben das alle MySql Dumps aus einem Ordner in die Datenbank schreibt.
Der Befehl um den Dump in die Datenbank zu spielen funktioniert einwandfrei. Nur der Befehl "CREATE SCHEMA " will beim besten willen nicht funktionieren.
command = Chr(34) & "C:\MySQL 560\bin\mysql.exe" & Chr(34) & " --host=" & server & " -u" & user & " -p" & pw & " -P " & port & " " & "Datenbank-Name" & " < " & "Absoluter pfad zum MySql Dump"
command2 = Chr(34) & "C:\MySQL 560\bin\mysql.exe" & Chr(34) & " --host=" & server & " -u" & user & " -p" & pw & " -P " & port & " " & "-e " & Chr(34) & "CREATE SCHEMA IF NOT EXISTS " & Chr(96) & "Datenbank-Name" & Chr(96) & " DEFAULT CHARACTER SET latin1 COLLATE latin1_bin" & Chr(34) & ";"
Shell.Run ("%comspec% /k " & command2),3,true
Shell.Run ("%comspec% /k " & command),3,true
Wo liegt hier der Fehler?
Wenn ich den Fehlerhaften Befehl wie folgt ändere, funktioniert er und ich bekomme eine offene Verbindung zum MySql.
command2 = Chr(34) & "C:\MySQL 560\bin\mysql.exe" & Chr(34) & " --host=" & server & " -u" & user & " -p" & pw & " -P " & port
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 282605
Url: https://administrator.de/forum/mysql-befehl-mittels-vbs-funktioniert-nur-dann-wenn-ich-keine-befehle-mit-angebe-was-mache-ich-falsch-282605.html
Ausgedruckt am: 23.12.2024 um 10:12 Uhr
12 Kommentare
Neuester Kommentar
Hi,
bist Du sicher, dass es Chr(96) sein muss und nicht etwa Chr(39)?
bzw. ganz ohne Chr()
E.
bist Du sicher, dass es Chr(96) sein muss und nicht etwa Chr(39)?
bzw. ganz ohne Chr()
command2 = """C:\MySQL 560\bin\mysql.exe"" --host=" & server & " -u" & user & " -p" & pw & " -P " & port & " " & "-e ""CREATE SCHEMA IF NOT EXISTS '" & "Datenbank-Name & "' DEFAULT CHARACTER SET latin1 COLLATE latin1_bin"";"
E.
Du könntest die Kommandos in eine temporäre CMD schreiben und diese CMD dann per Shell.Run starten.
Oder auf das "cmd /k" verzichten.
Oder zusätzlich "" aussen rum:
Oder auf das "cmd /k" verzichten.
Oder zusätzlich "" aussen rum:
command2 = """""C:\MySQL 560\bin\mysql.exe"" --host=" & server & " -u" & user & " -p" & pw & " -P " & port & " " & "-e ""CREATE SCHEMA IF NOT EXISTS '" & "Datenbank-Name & "' DEFAULT CHARACTER SET latin1 COLLATE latin1_bin"";"""
Wie @emeriks geschrieben hat, sollte es mit doppelten Anführungszeichen um das gesamte gehen, da mehrere Anführungszeichen drin vorkommen.
Beispiel (Geht nicht):
cmd.exe /k "d:\temp\test test\write.exe" "D:\temp\test test.txt"
Beispiel (Geht):
cmd.exe /k ""d:\temp\test test\write.exe" "D:\temp\test test.txt""
Beispiel (Geht nicht):
cmd.exe /k "d:\temp\test test\write.exe" "D:\temp\test test.txt"
Beispiel (Geht):
cmd.exe /k ""d:\temp\test test\write.exe" "D:\temp\test test.txt""
Moin,
da sind ein paar Fehler in der Anführungszeichensetzung drin gewesen ..
Dat lüppt hier...
Aber Achtung mit Sonderzeichen beim Passwort
Gruß jodel32
da sind ein paar Fehler in der Anführungszeichensetzung drin gewesen ..
Set objShell = CreateObject("Wscript.Shell")
command2 = """C:\MySQL 560\bin\mysql.exe"" --host=" & server & " -u" & user & " -p" & pw & " -P " & port & " " & "-e ""CREATE SCHEMA IF NOT EXISTS 'Datenbank-Name' DEFAULT CHARACTER SET latin1 COLLATE latin1_bin"";"
objShell.Run command2,3,True
Aber Achtung mit Sonderzeichen beim Passwort
Gruß jodel32
Hinter Datenbank-Name
SCHEMA IF NOT EXISTS '" & "Datenbank-Name & "' DEFAULT CHARACTER
Beachte: Er startet "cmd /k ....."
Geht hier auch ohne .