我一直收到'processComplete == 2'错误。我相信这里有人会在几秒钟内发现我的错误。
这是我的代码...... String filePath =“F:/ backup”; 文件f1 =新文件(filePath); f1.mkdir();
String bath = "F:/backup" + "/backup.sql";
String executeCmd = "C:\\Program Files\\MySQL\\MySQL Server 5.6\\bin\\mysqldump -u" + username + " -p" + password + " --database " + host + " -r " + bath;
Process runtimeProcess = Runtime.getRuntime().exec(executeCmd);
int processComplete = runtimeProcess.waitFor();
if (processComplete == 0){
System.out.println("Backup complete");
}
else{
System.out.println("Backup failure");
}
我尝试用Java调试。到目前为止,一切都在int processComplete = runtimeProcess.waitFor();线是正确的。但是,从'if(processComplete == 0){'位直接跳转到
else{
System.out.println("Backup failure");
}
我一直得到'processComplete == 2'错误,我会,如果有人能告诉我哪里出错了,我的意思是非常感激。它成功创建备份目录,但不创建backup.sql文件。
答案 0 :(得分:0)
根据我查找的MySql 5.6文档,用户和密码参数都是form -word = value,你只能将它们作为-lvalue(其中l是一个字母)。您可能是一个允许的替代品,但似乎值得按照他们在文档中提供的方式进行尝试,“ - user = whoever -password = password”。
由于您使用的是Windows,因此使用Windows目录分隔符而非unix / mac格式化F驱动器上的命令字符串似乎是合理的。所以我会尝试使用“f:\\ backup”等,而不是你在那里。
作为调试工具,您可以尝试将命令写入文件,然后将其复制并粘贴到DOS窗口并运行它。不要欺骗自己 - 不要输入任何内容,从程序中取出所有内容。至少可以通过这种方式查看输出。
答案 1 :(得分:-1)
public static boolean restoreDB(String dbName, String dbUserName, String dbPassword, String source) {
String executeCmd = "mysql" + " --user=" + dbUserName+ " --password=" + dbPassword+ " " +dbName+ " < "+ source;
Process runtimeProcess;
try {
runtimeProcess = Runtime.getRuntime().exec(new String[] { "cmd.exe", "/c", executeCmd });
int processComplete = runtimeProcess.waitFor();
if (processComplete == 0) {
System.out.println("Database created successfully.");
return true;
}
else if(processComplete == 1) {
System.out.println("Unknown database: " + dbName);
}
else {
System.out.println("Could not restore the database.");
}
} catch (Exception ex) {
ex.printStackTrace();
}
return false;
}