mysql无法在linux中从java调用mysqldump
代码如下:
public static File backupDB() throws IOException {
File file = null;
file = new File("BKUP_DB_"
+ Calendar.getInstance()).replace("/", "-") + ".sql");
String executeCmd = "mysqldump -u " + "dbUserName" + " -p" + "dbPassword"
+ " " + "dbName" + " > " +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 file;
} else {
System.out.println("Could not create the backup");
}
} catch (Exception ex) {
ex.printStackTrace();
}
return file;
}
我尝试过使用mysqldump的完整路径,比如/usr/bin/mysqldum
,但似乎没有任何效果,我怀疑linux存在权限问题。您必须是root用户才能创建mysql备份吗?如果没有,该代码有什么问题?如果是,linux:D有什么问题?我怎样才能解决这个问题。
多谢各位
# 1 楼答案
元字符“>;”由shell实现;运行带有
Runtime.exec()
的程序时不涉及shell,因此mysqldump
的最后两个参数是垃圾。使用数组参数形式Runtime.exec()
;将“/bin/sh”作为第一个参数,将-c作为第二个参数,将命令行作为第三个参数;这样,shell元字符将由/bin/sh解释