我正在尝试在我由 java 开发的桌面应用程序之一上添加“创建备份”选项。我对此进行了很多搜索,并找到了一些解决此问题的方法,但它们都破坏了一个重要的概念“可移植性”。许多人建议使用 mysqldump.exe(在 Windows 中)来执行此操作,但我想我需要知道 mysql 安装文件夹才能采用这种方法。以下是推荐的代码,顺便说一下无法正常运行(我不知道为什么,如果您注意到原因,请告诉我)
private static String dbName = "shams";
private static String dbUserName = "root";
private static String dbPassword = "";
public static boolean backupDB(File file) {
String path = file.getPath();
if (!path.contains(".sql")) {
file = new File(path +".sql");
}
String executeCmd = "mysqldump -u " + dbUserName + " -p" + dbPassword + " --add-drop-database -B " + dbName + " -r " + file.getPath();
Process runtimeProcess;
try {
runtimeProcess = Runtime.getRuntime().exec(executeCmd);
int processComplete = runtimeProcess.waitFor();
if (processComplete == 0) {
System.out.println("Backup created successfully");
runtimeProcess.destroy();
return true;
} else {
System.out.println("Could not create the backup");
}
} catch (Exception ex) {
ex.printStackTrace();
}
return false;
}
有些人建议简单地将数据库复制到某个位置。
所以..我应该以一种简洁的方式对此做些什么?有可用的第三方 jar 吗?
- 编辑 - -
给定代码的问题在于,当您没有用户(在本例中为 root 用户)的密码时,您不应在命令中提及密码。命令应该是这样的: String executeCmd = "mysqldump -u " + dbUserName + " --add-drop-database -B " + dbName + " -r " + file.getPath();
而且您毕竟不需要指定mysql安装文件夹。上面的代码按原样工作。