我正在尝试从Java应用程序备份我的数据库。目前,我正在使用xampp作为数据库的localhost
。我在我的程序中尝试了这些代码,但是当我执行这些代码时,我的程序继续等待状态。当我从命令行执行相同的代码时,它会询问密码,并在提供密码后备份文件backup.sql
成功创建。
我正在使用的代码是:
String executeCmd = "C:\\xampp\\mysql\\bin\\mysqldump.exe -u root -p db1 -r D:/mine/backup.sql";
Java代码:
Process runtimeProcess;
try {
runtimeProcess = Runtime.getRuntime().exec(executeCmd);
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();
}
答案 0 :(得分:2)
尝试使用带密码的命令,例如
String executeCmd = "C:\\xampp\\mysql\\bin\\mysqldump.exe -u root -pYOUR_DB_PASSWORD db1 -r D:/mine/backup.sql";
在-p
和DATABASE PASSWORD
之间注意 NO SPACE 。
编辑1:(来自评论)
要重新安排数据库,您需要执行
mysql -u root -pPASSWORD db1 < /full/qualified/path/to/backup.sql
编辑2:(改进)
您可能还想尝试一些很酷的选项,例如
mysqldump --user MYSQL_USER --password=MYSQL_PASSWORD --add-locks --flush-privileges \
--add-drop-table --complete-insert --extended-insert --single-transaction \
--database DB_TO_BACKUP > FILENAME_FOR_SQL_STATEMENTS
参考here。