java - 在java上备份mysql数据库
问题描述
我尝试从我的 java 应用程序(使用 wamp 服务器)备份 mysql 数据库,但它不起作用,它总是显示消息“无法创建备份”。这是我从这个线程中获取的代码: Backup a mysql [xampp] database in java
public static void saveBdd(){
String path = null;
String user = "root";
Process p = null;
JFileChooser fc = new JFileChooser();
fc.setDialogTitle("Choisir l'emplacement de la sauvegarde");
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.setAcceptAllFileFilterUsed(false);
fc.showOpenDialog(startPage);
String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
try {
File f = fc.getSelectedFile();
path = f.getAbsolutePath();
path = path.replace('\\', '/');
path = path+"/bcpbdd_"+date+".sql";
} catch (Exception e) {
e.printStackTrace();
}
try{
Runtime runtime = Runtime.getRuntime();
p=runtime.exec("C:/wamp64/bin/mysql/mysql5.7.23/bin/mysqldump -u " + user + " --add-drop-database -B bcpbdd -r "+path);
int processComplete = p.waitFor();
if (processComplete==0) {
StartPage.afficheMessage("Backup Created Success!");
} else {
StartPage.afficheMessage("Can't create backup.");
}
} catch (Exception e) {
StartPage.afficheMessage(e.getMessage());
}
}
解决方案
p.getErrorStream()
您可以使用and读取进程的输出,p.getInputStream()
这应该在新线程中完成,然后您可以将输出写入日志文件或控制台。
推荐阅读
- java - 控制异常输出格式
- dart - Flutter:将来自 http 调用的 Future 响应捕获为普通列表
- android - 如何允许BottomSheetDialog的外部触摸?
- node.js - 原始操作未执行
- windows - 自己做跨平台(Win + OSX)安装程序有什么风险?
- prolog - 如何显示最大数量
- c# - FileLoadException:文件正在使用中
- azure - Azure CDN HTTPS 卡在启用 - 验证请求被发送到受 gdpr 保护的电子邮件?任何解决方法?
- apache-spark - 写入 AWS Redshift 的 Spark 2.4.0 依赖项
- r - R-如何获得不同列的非NA区间的平均值/中值/标准差?