Java exec()mysqldump错误:找不到表“>”

时间:2013-01-07 10:52:16

标签: java exec mysqldump

我正在从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");
        }

看起来他不明白>不是一个表而是一个转储命令。

2 个答案:

答案 0 :(得分:3)

常见问题 - 您无法使用管道或重定向执行语句。它们只能由shell执行。

进一步阅读

答案 1 :(得分:1)

这不起作用,因为Runtime.exec()不会调用shell,而>是shell重定向。

因此,要么使用{ "/bin/bash", "-c", "thescripthere" }之类的数组,(不推荐),要么使用ProcessBuilder