mysqldump命令与java Runtime.getRuntime()。exec(命令)不生成转储

时间:2015-02-24 11:36:18

标签: java runtime exec mysqldump

我尝试使用以下代码段:

Process p;

String command="mysqldump -u'scmuser' -p'scm$123' --routines db_name  >  /home/ubuntu/wh_demo_db_reset.sql";
p = Runtime.getRuntime().exec(command);

不会生成转储文件,也不会抛出任何错误。我无法预测确切的问题,请帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:1)

元字符">"由shell实现;使用Runtime.exec()运行程序不涉及shell,因此mysqldump的最后两个参数是垃圾。使用Runtime.exec()的数组参数形式;传递" / bin / sh"作为第一个参数," -c"作为第二个,你的命令行作为第三个;这样,shell元字符将由/ bin / sh解释。

您可以将cmd数组形成为:

String[] cmdarray = {"/bin/sh","-c",command}; 
Process process = Runtime.getRuntime().exec(cmdArray);