我的目标是使用 mysql 命令恢复 Mysql 转储。
我在使用 ProcessBuilder 和 Apache Commons Exec (1.3) 的代码之间有明显的行为差异。
这段代码工作得很好
List<String> params = new ArrayList<>();
params.add("sh");
params.add("-c");
params.add("mysql -uroot -proot < /tmp/the_dump.sql");
ProcessBuilder pb = new ProcessBuilder(params);
Process p = pb.redirectErrorStream(true).start();
int exitValue = p.waitFor();
但是这个(使用 Apache Commons Exec)
CommandLine cmdLine = new CommandLine("/usr/bin/sh");
cmdLine.addArgument("-c");
cmdLine.addArgument("mysql -uroot -proot -e 'source /tmp/the_dump.sql'");
PumpStreamHandler streamHandler = new PumpStreamHandler(System.out, System.err, System.in);
Executor executor = new DefaultExecutor();
executor.setStreamHandler(streamHandler);
int exitValue = executor.execute(cmdLine);
因以下错误而崩溃:
请注意 Apache Commons Exec 解释的命令末尾缺少的 '。
有人知道如何使其与 Apache Commons Exec 一起工作吗?
非常感谢你的帮助,西尔万