gpt4 book ai didi

java - 无法在 linux 中从 java 调用 mysqldump

转载 作者:太空狗 更新时间:2023-10-29 11:24:25 60 4
gpt4 key购买 nike

这是代码:

public static File backupDB() throws IOException {

File file = null;

file = new File("BKUP_DB_"
+ Calendar.getInstance()).replace("/", "-") + ".sql");

String executeCmd = "mysqldump -u " + "dbUserName" + " -p" + "dbPassword"
+ " " + "dbName" + " > " +file.getPath();



Process runtimeProcess;
try {

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

if (processComplete == 0) {
System.out.println("Backup created successfully");
runtimeProcess.destroy();
return file;
} else {

System.out.println("Could not create the backup");
}

} catch (Exception ex) {
ex.printStackTrace();

}

return file;
}

我已经尝试使用 mysqldump 的完整路径,如 /usr/bin/mysqldum 但似乎没有任何效果,我怀疑有关 linux 的权限问题。您必须是 root 才能创建 mysql 备份吗?如果不是,这段代码有什么问题?如果是的话,linux 有什么问题:D?我该如何解决这个问题。谢谢。

最佳答案

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

关于java - 无法在 linux 中从 java 调用 mysqldump,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17022270/

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