Ich kann eine Datei nur dann nicht lesen, wenn der Datenbankname like enthält (neue Datenbank (myid) usw.) Ich gebe einen folgenden Beispielcode:
%Vor%Angenommen mein Datenbankname de mo bedeutet, wenn ich Zeile drucke, habe ich einen Datenbanknamen wie nur de. Ist ein Datenbankname mit leerem Leerzeichen möglich?
Kennen Sie den Fehler exec
doppelte Anführungszeichen? (für Runtime.exec
oder ProcessBuilder
)
Sie können versuchen:
%Vor% Stellen Sie nur sicher, dass keiner Ihrer Parameter, die Sie übergeben müssen, doppelte Anführungszeichen enthält (während nicht mit doppelten Anführungszeichen beginnt)
(Siehe Fehler 6511002 )
Jeder Parameter wie:
%Vor% würde intern (durch die getRuntime()
Implementierung) in
Wenn dies der Fall ist, müssten Sie das Argument in Token setzen:
%Vor%Java und das Betriebssystem müssen wissen, was der Befehl ist und was die Argumente sind. Also:
1) Sie können versuchen, exec(String, String[])
zu verwenden, um die cmd und die Argumente durch separate
2) Sie können den Befehl mysqldump und jedes Argument in doppelte Anführungszeichen setzen, damit das Betriebssystem die einzelnen Dinge kennt.
Wenn Sie die Option (1) verwenden, erhält das Programm mysqldump ein Argument nach Element im Array, unabhängig von den Leerzeichen oder was auch immer.
Ich bin mir nicht sicher, ob ich Ihre Frage vollständig verstehe, aber Ihr dumpCommand scheint alle Variablen (hostName, user, databaseName) zu einer großen Zeichenfolge zusammenzufassen.
Machen Sie eine System.out.println (dumpCommand); und schauen Sie, ob Sie das wirklich ausführen wollen.
Vermutlich vermissen Sie hier einige Räume.
Wenn das "-" selbst ein Problem ist, möchten Sie es vielleicht umgehen, sonst wird mysqldump denken, dass es ein Parameter ist.
Tags und Links java runtime.exec