Выполнение mysqldump с использованием Java-программы в MacOS - PullRequest
0 голосов
/ 24 ноября 2018

Я использую MacOS Mojave, а mysqldump установлен в path в ~/.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 Installation.

[Обновление]

Я думаю, что эта проблема связана с Netbeans.Я тестирую из Netbeans.Кажется, NetBeans не загружается ~/.bash_profile

1 Ответ

0 голосов
/ 24 ноября 2018

Попробуйте использовать этот путь для выполнения mysqldump

/Applications/AMPPS/mysql/bin/mysqldump

ваша команда должна выглядеть примерно так

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