gpt4 book ai didi

java - 在java运行时Process.waitFor()中执行mysql恢复命令总是返回1

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

以下代码总是返回 1。我不明白为什么。

String executeCmd[] = {"mysql"," -u" + dbUser," -p" + dbPass," -A"," -D"+dbName ," < " + restorePath};

Process runtimeProcess = Runtime.getRuntime().exec(executeCmd);
int processComplete = runtimeProcess.waitFor();

if (processComplete == 0) {
System.out.println("Successfully restored from SQL : " + s);
} else {
System.out.println("Error at restoring");
}

最佳答案

我花了一个星期的时间试图解决这个问题,终于找到了答案。

问题是,<在上面的代码中(流重定向)。在 Java 中执行进程时不能使用流重定向(在这种情况下它根本不起作用)。

因此,您必须在不使用流重定向的情况下执行此操作。一种方法是:

mysql -u root -p**** --execute "SOURCE \\path\\to\\sql"

尝试:

String executeCmd[] = {"mysql"," -u "+dbUser," -p"+dbPass," -A"," -D"+dbName," --execute"," \"SOURCE "+restorePath+"\""};

或者简单地说:

String executeCmd = "mysql -u "+dbUser+" -p"+dbPass+" -A -D "+"dbName -e \"SOURCE "+restorePath+"\"";

关于java - 在java运行时Process.waitFor()中执行mysql恢复命令总是返回1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33082953/

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