mysql mysqldump在java中不起作用
我正在使用此命令行参数克隆数据库:-
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump" -u root -ppass -d oldDB | mysql -u root -ppass -DnewDB
当直接粘贴到命令行中时,此项工作正常。但是,当我尝试使用java运行此参数时,它不起作用。我的java代码是:-
String serverLoc = "C:\\Program Files\\MySQL\\MySQL Server 5.6\\";
String a = "\"" + serverLoc + "bin\\mysqldump\" " ;
String cmd = a + "-u root -ppass -d oldDB | mysql -u root -ppass -DnewDB";
Process runtimeProcess = Runtime.getRuntime().exec(executeCmd);
int processComplete = runtimeProcess.waitFor();
if (processComplete == 0) {
System.out.println("SUCCESS");
} else {
System.out.println("ERROR");
}
//OUTPUT : ERROR
异常处理未显示,因为未打印堆栈跟踪。当我打印cmd
时,将打印上面所需的字符串,粘贴到命令行时,该字符串可以工作。请帮我解决这个难题
# 1 楼答案
我相信在windows上,您必须以这种方式调用命令:
另外,我认为最好使用
Runtime.getRuntime().exec(String[])
方法使用ProcessBuilder的现代方式:thx@Daniel