Я хочу проверить выполнение команды mysqldump в моей функции, но я не смог создать файл aaadumpdb.sql. Мой код ниже:Как запустить команду mysqldump в java-коде?
@Test
public void dumpDB() {
Process p = null;
try {
Runtime runtime = Runtime.getRuntime();
p = runtime
.exec("mysqldump -u root -padmin --add-drop-database aaa_db "
+ "D:\\backupdenemeaaa " + "aaadumpdb.sql");
// change the dbpass and dbname with your dbpass and dbname
int processComplete = p.waitFor();
if (processComplete == 0) {
System.out.println("Backup created successfully!");
} else {
JOptionPane.showMessageDialog(new JDialog(),
"Could not create the backup");
}
} catch (Exception e) {
e.printStackTrace();
}
File f = new File("aaadumpdb.sql");
assertTrue(f.exists());
}
Может ли кто-нибудь дать мне совет по этому поводу? Спасибо.
Я сделал некоторые изменения в своем коде, но когда я запустил, мой код войдет в другую структуру. В чем проблема?
Мой Editted код ниже:
@Test
public void dumpDB() {
Process p = null;
try {
Runtime runtime = Runtime.getRuntime();
String mysqldumpExecutable = "C:\\Program Files\\MySQL\\MySQL Server 5.6\\bin\\mysqldump.exe";
p = runtime.exec(mysqldumpExecutable + " -uroot -padmin --add-drop-database -B aaa_db -r" + "D:\\backupdenemeaaa " + "\\aaadumpdb.sql");
// change the dbpass and dbname with your dbpass and dbname
int processComplete = p.waitFor();
if (processComplete == 0) {
System.out.println("Backup created successfully!");
} else {
JOptionPane.showMessageDialog(new JDialog(),
"Could not create the backup");
}
} catch (Exception e) {
e.printStackTrace();
}
File f = new File("aaadumpdb.sql");
assertTrue(f.exists());
Как я могу решить эту проблему? Спасибо.
Это потому, что вы не обрабатываете выходные потоки объекта Process вскоре после его инициализации. Вам нужно обработать getErrorStream и getOutputStream, чтобы вы могли узнать, сохраняется ли какое-либо исключение в команде, которую вы хотите выполнить. И, наконец, находится ли мусор MySql в вашей переменной пути? Как JVM предполагает знать, где находится команда mysqldump! –