我正在从Java类执行mysqldump命令,但我一直收到标题中提到的错误。
这是我正在使用的代码:
Process runtimeProcess = Runtime.getRuntime().exec("mysqldump -uroot -pmypassword valo > /etc/valbu.sql");
int processComplete = runtimeProcess.waitFor();
if(processComplete == 0){
System.out.println("Backup taken successfully");
} else {
InputStream stderr = runtimeProcess.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<ERROR>");
while ( (line = br.readLine()) != null)
System.out.println(line);
System.out.println("</ERROR>");
System.out.println("Could not take mysql backup");
}
看起来他不明白>
不是一个表而是一个转储命令。
答案 0 :(得分:3)
答案 1 :(得分:1)
这不起作用,因为Runtime.exec()
不会调用shell,而>
是shell重定向。
因此,要么使用{ "/bin/bash", "-c", "thescripthere" }
之类的数组,(不推荐),要么使用ProcessBuilder
。