在MacOS中使用Java程序执行mysqldump

时间:2018-11-24 03:52:15

标签: java mysql bash netbeans-7 processbuilder

我正在使用MacOS Mojave,并且mysqldump设置为~/.bash_profile中的路径

使用MacOS Terminal时,mysqldump正常工作。

即使使用/bin/bash -c mysqldump,它也可以正常工作。

但是当我按如下所示在Java应用程序中尝试时,出现错误。

错误/输出:

command: [/bin/bash, -c, mysqldump -hlocalhost-u root -p123 some_database -r "/Users/Username/Workspace/backup.sql"] /bin/bash: mysqldump: command not found false

程序代码:

String cmd = "mysqldump -h" + dbHost + "-u " + dbUser + " -p" + dbPass + " " + dbName + " -r \"" + file.getAbsolutePath() + "\"";
ProcessBuilder pb = new ProcessBuilder("/bin/bash", "-c", cmd);
pb.redirectErrorStream(true);
pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
pb.directory(new File(System.getProperty("user.home")));
System.out.println("command: " + pb.command());  
Process process = pb.start();
int processComplete = process.waitFor();
if (processComplete == 0) {
    return true;
} else {
    return false;
}

我正在使用AMPPS MySQL安装。

[更新]

我认为此问题与Netbeans有关。我正在从Netbeans测试。似乎Netbeans无法加载~/.bash_profile

1 个答案:

答案 0 :(得分:0)

尝试使用此路径执行mysqldump

/Applications/AMPPS/mysql/bin/mysqldump

您的命令应该是这样的

String cmd = "/Applications/AMPPS/mysql/bin/mysqldump  -h" + dbHost + "-u " + dbUser + " -p" + dbPass + " " + dbName + " -r \"" + file.getAbsolutePath() + "\"";