gpt4 book ai didi

java - mysqldump 在 java 中不起作用

转载 作者:行者123 更新时间:2023-11-29 00:07:39 26 4
gpt4 key购买 nike

我正在使用这个命令行参数来克隆数据库:-

"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 时,上面所需的字符串被打印出来,当粘贴到命令行时它可以工作。请帮我解决这个难题。

最佳答案

我相信在 Windows 上你必须这样调用命令:

Runtime.getRuntime().exec("cmd " + ecuteCmd)

另外我认为最好使用Runtime.getRuntime().exec(String[])方法

    String prog = "C:\\program files\\server\\xampp\\mysql\\bin\\mysql";
String user = "-uroot";
String pass = "-ppass";
Process runtimeProcess = Runtime.getRuntime().exec(new String[] { prog, user, pass });

使用 ProcessBuilder 的现代方式:thx @Daniel

    String prog = "C:\\program files\\server\\xampp\\mysql\\bin\\mysql";
String user = "-uroot";
String pass = "-ppass";

ProcessBuilder builder = new ProcessBuilder(prog, user, pass);
Process runtimeProcess = builder.start();
int result = runtimeProcess.waitFor();
//...

关于java - mysqldump 在 java 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26756571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com