CreateProcess error=5,在java中使用processbuilder备份mysql数据库时拒绝访问
我试图用Java中的CreateProcess error=5,在java中使用processbuilder备份mysql数据库时拒绝访问,java,mysql,access-denied,Java,Mysql,Access Denied,我试图用Java中的ProcessBuilder备份MySQLDB,但是,我得到了这个错误 "!Cannot run program "C:\Program Files\MySQL\MySQL Server 5.5\bin": CreateProcess error=5, Access is denied". 这是我的密码 public static String backupDb() { String resp=null; try { System.out.p
ProcessBuilder
备份MySQLDB,但是,我得到了这个错误
"!Cannot run program "C:\Program Files\MySQL\MySQL Server 5.5\bin": CreateProcess error=5, Access is denied".
这是我的密码
public static String backupDb() {
String resp=null;
try {
System.out.println("Started........");
ProcessBuilder builder = new ProcessBuilder("C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin", "mysqldump -u root -pmypass mydb> c:\\backup\\mybackup.sql");
builder.redirectErrorStream(true);
Process p = builder.start();
} catch(Exception e) {
resp="!"+e.getMessage();
}
return resp;
}
我哪里会出错?要想让它正常工作,您必须做几件事:
)将无法工作李>
C:\\foo\bar\foobar\backup.sql
中备份数据库,但C:\\foo
,C:\\foo\\bar
,C:\\foo\\bar\\foobar
文件夹中的一个不存在,则会出现错误“
”中,否则您将遇到棘手的错误,例如:“C:\Program”未被识别为内部或外部命令
public static void backupDb(final String mysqlDumpFilePath)
throws IOException, InterruptedException {
String folderPath = mysqlDumpFilePath.substring(0, mysqlDumpFilePath.lastIndexOf("\\"));
File folder = new File(folderPath);
if (!folder.exists()) {
folder.mkdirs(); // 2
}
File f = new File(mysqlDumpFilePath);
ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "C:\\\"Program Files\"\\MySQL\\\"MySQL Server 5.5\"\\bin\\mysqldump -u root -pmypass mydb > "
+ f.getAbsolutePath()); //1 & 3
Process exec = builder.start();
int retCode = exec.waitFor();
if (retCode != 0) { //4
// something went wrong
InputStream errorStream = exec.getErrorStream();
byte[] buffer = new byte[errorStream.available()];
errorStream.read(buffer);
System.out.println(new String(buffer));
}
}
将
C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin
更改为C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\MySQL.exe
。错误本身表明该文件不可执行。谢谢。恢复呢?