【问题标题】:Executing mysqldump using Java program in MacOS在 MacOS 中使用 Java 程序执行 mysqldump
【发布时间】:2018-11-24 03:52:15
【问题描述】:

我使用的是 MacOS Mojave,mysqldump 设置为~/.bash_profile中的路径

当使用 MacOS 终端时,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

【问题讨论】:

    标签: java mysql bash netbeans-7 processbuilder


    【解决方案1】:

    尝试使用此路径执行mysqldump

    /Applications/AMPPS/mysql/bin/mysqldump

    你的命令应该是这样的

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

    【讨论】:

    • 我需要一种从 env 或某个地方获取路径的方法。因为这个应用程序是一个跨平台的。也需要在 Windows 和 Linux 上工作。
    • 尝试在 mac 上以 root 用户身份运行相同的命令。您能否确认您的应用是否需要 sudo privs?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2013-01-19
    • 2011-09-05
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多