/home-6ren">
gpt4 book ai didi

java - 带有 java Runtime.getRuntime().exec(command) 的 mysqldump 命令不生成转储

转载 作者:可可西里 更新时间:2023-11-01 08:30:15 28 4
gpt4 key购买 nike

我试过以下代码片段:

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);

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

最佳答案

元字符“>”由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);

关于java - 带有 java Runtime.getRuntime().exec(command) 的 mysqldump 命令不生成转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28694761/

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