java - 无法在 XAMPP 中运行 mysqldump
问题描述
我无法在 xampp 中执行 mysqldump,它显示“系统找不到指定的文件”。我正在使用以下代码:
public boolean backupDB(String dbName, String dbUserName, String dbPassword, String path) {
String[] executeCmd = new String[] {
"mysqldump.exe",
"-u",
dbUserName,
"-p",
dbPassword,
"--add-drop-database",
"-B",
dbName,
"-r",
path
};
Process runtimeProcess;
try {
File pasta = new File("C:\\xampp\\mysql\\bin");
runtimeProcess = Runtime.getRuntime().exec(executeCmd, null, pasta);
int processComplete = runtimeProcess.waitFor();
if (processComplete == 0) {
System.out.println("Backup created successfully");
return true;
} else {
System.out.println("Could not create the backup");
}
} catch (Exception ex) {
ex.printStackTrace();
}
return false;
}
当我运行它时,我收到以下错误:
java.io.IOException: Cannot run program "mysqldump.exe" (in directory "C:\xampp\mysql\bin"): CreateProcess error=2, O sistema não pode encontrar o arquivo especificado
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at xd.test.backupDB(test.java:25)
at xd.ee.main(ee.java:7)
设置一个是mysqldump,它是正确的扩展类型,它仍然没有找到mysqldump。我尝试了一切,但无法解决这个问题,有什么想法吗?
解决方案
改用 ProcessBuilder ,试试这个:
String[] executeCmd = new String[] {
"C:\\xampp\\mysql\\bin\\mysqldump.exe ",
"-u ",
dbUserName,
"-p ",
dbPassword,
"--add-drop-database ",
"-B ",
dbName,
"-r ",
path
};
final ProcessBuilder pb = new ProcessBuilder(Arrays.asList(executeCmd));
final Process p;
try {
p = pb.start();
int processComplete = p.waitFor();
if (processComplete == 0) {
System.out.println("Backup created successfully");
return true;
} else {
System.out.println("Could not create the backup");
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line = null;
while ( (line = reader.readLine()) != null) {
System.out.println(line);
}
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
推荐阅读
- javascript - 返回在函数内部不起作用(快照)
- java - Jackson:在自定义(de)序列化程序之间共享状态
- google-chrome - 解析类似于 IHTMLDocument2 的 Chrome 窗口
- cognos-10 - 如何根据列表数据在一个报表页面中隐藏多个列表对象
- python - 如何查找 groupby 列结果的比率
- c# - 实体框架迁移继承而不创建父表
- plugins - 如何编写一个在相关子网格更新时触发的插件
- javascript - 来自谷歌日历事件的 Js 日期格式
- cron - Plesk Cronjob 命令 - 达到 memory_limit
- c# - WPF 用户控件选择器