[英]How to take db backup of mysql db without stopping mysql server
[英]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.