2014-04-08 7 views
0

'processComplete == 2'오류가 계속 발생합니다. 나는 여기 누군가가 나의 실수를 몇 초 안에 발견 할 것이라고 확신한다.processComplete == 2 오류. MySQL의 백업 Java

여기 내 코드는 ... String filePath = "F :/backup"; 파일 f1 = 새 파일 (filePath); f1.mkdir();

String bath = "F:/backup" + "/backup.sql"; 
String executeCmd = "C:\\Program Files\\MySQL\\MySQL Server 5.6\\bin\\mysqldump -u" + username + " -p" + password + " --database " + host + " -r " + bath; 

Process runtimeProcess = Runtime.getRuntime().exec(executeCmd); 
int processComplete = runtimeProcess.waitFor(); 

if (processComplete == 0){ 
    System.out.println("Backup complete"); 
} 
else{ 
    System.out.println("Backup failure"); 
} 

Java에서 디버깅을 시도했습니다. 지금까지 모든 것을 int로 처리 processComplete = runtimeProcess.waitFor(); 라인이 맞습니다. 그러나로부터는 '경우 (processComplete는 == 0) {'가 나는 것 곧바로

else{ 
    System.out.println("Backup failure"); 
} 

나는 계속지고 'processComplete == 2'오류를 뛰어 비트, 나는 크게 의미 사람이 말할 수 있다면 감사 나 어디서 잘못 될지. 백업 디렉토리를 성공적으로 작성하지만 backup.sql 파일은 작성하지 않습니다.

+0

sql 파일에 'select into'문이있는 경우 문이 데이터를 반환하지 않을 수 있습니다. http://stackoverflow.com/a/3846037/862441을 확인하십시오. 종료 코드 '2'는 '찾을 수 없음'오류를 나타냅니다. – srkavin

답변

0

내가 훑어 본 MySql 5.6 문서에 따르면 사용자와 암호 매개 변수는 모두 -word = value 형식이며 -lvalue (여기서 l은 문자)로만 구성됩니다. 당신은 허용 된 대용 물일지도 모르지만, 문서에서 "-user = whoever -password = password"와 같이 시도해 볼 가치가 있습니다.

Windows를 사용하고 있기 때문에 unix/mac 대신 Windows 디렉토리 구분자를 사용하여 F 드라이브의 명령 문자열을 포맷하는 것이 합리적입니다. 그래서 나는 당신이 가지고있는 것 대신에 "f : \\ backup"등을 사용하려고 시도 할 것입니다.

디버깅 도구로 파일에 명령을 쓰고 DOS 창에 복사하여 붙여 넣기를 시도해보십시오. 속이지 마세요 - 아무 것도 입력하지 말고 프로그램에서 모두 가져 가십시오. 적어도 그렇게하면 출력을 볼 수 있습니다.

-1
public static boolean restoreDB(String dbName, String dbUserName, String dbPassword, String source) { 
    String executeCmd = "mysql" + " --user=" + dbUserName+ " --password=" + dbPassword+ " " +dbName+ " < "+ source; 
    Process runtimeProcess; 
    try { 
     runtimeProcess = Runtime.getRuntime().exec(new String[] { "cmd.exe", "/c", executeCmd }); 
     int processComplete = runtimeProcess.waitFor(); 
     if (processComplete == 0) { 
      System.out.println("Database created successfully."); 
      return true; 
     } 
     else if(processComplete == 1) { 
      System.out.println("Unknown database: " + dbName); 
     } 
     else { 
      System.out.println("Could not restore the database."); 
     } 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
    return false; 
} 
+0

시도해보십시오. 작동합니다. – Vineet

+0

변경 한 내용을 설명해 주시겠습니까? –