Java mysqldump只是不';行不通
我已经看了一会儿了 我已经从命令行运行了这个确切的命令,我知道它可以工作:Java mysqldump只是不';行不通,java,mysql,Java,Mysql,我已经看了一会儿了 我已经从命令行运行了这个确切的命令,我知道它可以工作: mysqldump --user=user --password=password db > C:\\db.sql 然而,在Java中,它只是直接跳过,说备份失败了。我错过了什么 Process exec = Runtime.getRuntime().exec("mysqldump --user=user --password=password db > C:\\db.sql");
mysqldump --user=user --password=password db > C:\\db.sql
然而,在Java中,它只是直接跳过,说备份失败了。我错过了什么
Process exec = Runtime.getRuntime().exec("mysqldump --user=user --password=password db > C:\\db.sql");
int processComplete = exec.waitFor();
if(processComplete == 0)
log.info("Backup successful.");
else
log.info("Backup failed. STOP GETTING HERE :(");
有什么想法吗?我在这里研究了其他问题,包括使用ProcessBuilder,但没有任何效果
编辑
我试过这个:
exec=Runtime.getRuntime().exec(“C:\ProgramFiles\MySQL\MySQL Server 5.5\bin\mysqldump.exe--user=user--password=password db>C:\db.sql”)
也不走运
我总是尝试/而不是\而且运气不好。我重新启动了MySQL并检查了权限。问题似乎与我在代码中如何使用mysqldump有关。当我将命令重写为以下内容时:
Process exec = Runtime.getRuntime().exec("mysqldump -u user -ppassword db -r C:\\db.sql");
成功了
以防万一将来有人想要这个解决方案。当您尝试从java执行命令时,命令行中的工作目录是什么?带有cmd的工作目录是C:,java中的命令就是您所看到的。另外-为什么我会收到关闭和否决的请求?至少解释一下……我猜java调用找不到mysqldump可执行文件。我会提供它的完整路径,因此我的问题围绕着工作目录。它可能是反斜杠的转义吗?