2012-05-24 2 views
1

좋아, Java 응용 프로그램은 Windows 런타임 환경을 사용하여 mysqldump 백업을 수행 할 수 없습니다. 잡힌 예외에 대한 출력 코드가 있고 예외가 발생하지 않는 것을 볼 수 있습니다. 백업 코드가 실행될 때 표면이 잘 보이게됩니다.MySQL의 mysqldump가 Win7에서 Java 코드로 발행되었습니다.

또한 명령 줄 콘솔에서 mysqldump 명령을 테스트했습니다. 거기에 문제없이 작동합니다.

코드 : IT/정보 백업 데이터베이스를 덤프하지 않습니다 이유

Runtime rt = Runtime.getRuntime(); 
try { 
    Process pr = rt.exec("mysqldump -u test --password=pass lager > newBackup.sql"); 

} catch (IOException ex) { 
    System.out.println("IO error Runtime. "+ex.getMessage()); 
} 

사람이 알고 있나요? 추가 할 필요가 있거나 윈도우 7을 실행하는 데 필요한 권한이 있습니까?

+0

당신은'ex.getMessage을 인쇄하고 있습니다 : 내 옆에

나는 javaworld에서 기사로 찾아 클래스 StreamGoggle와 명령 --help mysqldump에의 출력을 캡처하는 일이 코드를 시도 하지만 네가 말하는대로 말하지 않은거야? –

+0

그게 다예요, 어떤 예외도 던지지 않습니다. 그것은 내가 잘못 명령을 얻었거나 PATH 변수로 mysqldump를 가지고 있지 않은 경우에 사용되었습니다. 출력되는 파일이 없으며 피드백이 없기 때문에 이유를 알 수 없습니다. – gorn

답변

0

이 기사에서 명령 줄 (http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html)의 차이점에 대해 살펴볼 수 있습니다.) (

public Main() { 
    try { 
     FileOutputStream fos = new FileOutputStream("c:/tmp/test.txt"); 
     Runtime rt = Runtime.getRuntime(); 
     Process proc = rt.exec("mysqldump --help"); 
     // any error message? 
     StreamGobbler errorGobbler = new StreamGobbler(
       proc.getErrorStream(), "ERROR"); 

     StreamGobbler outputGobbler = new StreamGobbler(
       proc.getInputStream(), "OUTPUT", fos); 

     errorGobbler.start(); 
     outputGobbler.start(); 

     int exitVal = proc.waitFor(); 
     System.out.println("ExitValue: " + exitVal); 
     fos.flush(); 
     fos.close(); 
    } catch (Throwable t) { 
     t.printStackTrace(); 
    } 
}