簡體   English   中英

進行MySQL備份

[英]Take MySQL backup

我需要避免該錯誤,並使用mysqldump將數據庫備份存儲在單獨的文件路徑中

public class NewClass {

    public static void main(String args[]) throws IOException, SQLException {
        String dbName = "test";
        String dbUser = "root";
        String dbPass = "root";
        try {
            String executeCmd = "";
            executeCmd = "mysqldump -u " + dbUser + " -p" + dbPass + " " + dbName + " -r backup.sql";

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

            if (processComplete == 0) {
                System.out.println("Backup taken successfully");
            } else {
                System.out.println("Could not take mysql backup");
            }
        } catch (InterruptedException ex) {
            Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
        }    

    }
}

錯誤:運行:線程“ main”中的異常java.io.IOException:無法運行程序“ mysqldump”:CreateProcess錯誤= 2,系統找不到在java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)指定的文件在mypkg.NewClass處的java.lang.Runtime.exec(Runtime.java:345)處的java.lang.Runtime.exec(Runtime.java:448)處的java.lang.Runtime.exec(Runtime.java:615)處。 main(NewClass.java:27)原因:java.io.IOException:CreateProcess錯誤= 2,系統無法在java.lang.ProcessImpl。(ProcessImpl)上找到java.lang.ProcessImpl.create(Native Method)指定的文件。 .java:288),位於java.lang.ProcessImpl.start(ProcessImpl.java:133),位於java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)... ...另外4個Java結果:1成功構建(總時間: 0秒)

嘗試將完整路徑放入mysqldump程序

executeCmd = "/full/path/to/mysqldump -u " + dbUser + " -p" + dbPass + " " + dbName + " -r backup.sql";

我也很想把完整路徑放在要寫入轉儲的文件上。

您是否嘗試為exec函數提供一個String數組? 前一段時間對我有幫助。

String[] comm = new String[4];
comm[0] = "C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysqldump"
comm[1] = "-u " + dbUser;
comm[2] = "-p " + dbPass + " " + dbName;
comm[3] = "-r backup.sql";
Process runtimeProcess = Runtime.getRuntime().exec(comm)

因為當使用單個String作為參數時我有一些奇怪的行為...

只需修改您的

executeCmd = "mysqldump -u " + dbUser + " -p" + dbPass + " " + dbName + " -r backup.sql";

executeCmd = "mysqldump -u " + dbUser + " -p" + dbPass + " " + dbName;

並在if-else語句之后添加

String str="";

PrintWriter pw = new PrintWriter("path for this file/backup.sql");

Scanner outScanner = new Scanner(runtimeProcess.getInputStream());

while(outScanner.hasNextLine()){

pw.println(outScanner.nextLine());

}

outScanner.close();

pw.close();

我也有同樣的問題。 對我來說,我只是在路徑變量中添加了mysql。 在路徑變量中設置了舊的安裝。 刪除它並添加新路徑。

暫無
暫無

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

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