簡體   English   中英

processComplete == 2錯誤。 MySQL備份Java

[英]processComplete == 2 error. mySQL Backup Java

我不斷收到“ processComplete == 2”錯誤。 我相信這里有人會在幾秒鍾內發現我的錯誤。

這里是我的代碼...字符串文件路徑=“F:/備份”; 文件f1 =新File(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();為止的所有操作; 線是正確的。 但是,它從'if(processComplete == 0){'位直接跳到

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

我會不斷收到“ processComplete == 2”錯誤,如果有人可以告訴我我要去哪里,我會非常感激。 它會成功創建一個備份目錄,但不會創建一個backup.sql文件。

根據我查閱的MySql 5.6文檔,用戶和密碼參數均為-word = value形式,而您只能將它們作為-lvalue(其中l是字母)。 您的替代品也許是允許的替代品,但是按照他們在文檔“ -user = whoever -password = password”中給出的方式進行嘗試似乎很值得。

由於您使用的是Windows,因此使用Windows目錄分隔符而不是unix / mac分隔符在F驅動器上格式化命令的字符串似乎是合理的。 因此,我將嘗試使用“ f:\\\\ backup”等,而不是那里的內容。

作為調試工具,您可以嘗試將命令寫到文件中,然后將其復制並粘貼到DOS窗口中並運行它。 不要欺騙自己-不要輸入任何內容,請從程序中獲取所有內容。 至少以這種方式,您可以查看輸出。

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;
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM