Laufzeit.getRuntime (). exec ()

8

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?

    
JohnRaja 27.01.2010, 12:18
quelle

5 Antworten

15

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

geändert werden %Vor%

Wenn dies der Fall ist, müssten Sie das Argument in Token setzen:

%Vor%     
VonC 27.01.2010, 14:26
quelle
2

Der Dateipfad enthält Leerzeichen, die möglicherweise eines der Probleme sind. Versuchen Sie es stattdessen:

%Vor%

und folgen Sie phischs Vorschlag, um den dumpCommand String zu drucken, um zu überprüfen, ob es sich um einen gültigen mysqldump-Aufruf handelt

    
Andreas_D 27.01.2010 12:42
quelle
2

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

bereitzustellen

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.

    
helios 27.01.2010 12:35
quelle
0

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.

    
phisch 27.01.2010 12:31
quelle
0

Es scheint, dass die mysqldump-Syntax ein wenig anders ist. Unten ist mein Arbeitsbeispiel mysqldump -h mysserver -u root -p mein_db -R & gt; create_db.sql Ich denke du solltest "" oder "" für komplexe Namen verwenden (habe mich selbst nicht überprüft).

    
burnall 27.01.2010 12:30
quelle

Tags und Links