在我的Java应用程序中,我启动一个postgres进程来备份我的数据库。
Thread thread = new Thread(() ->{
Process p;
try{
p = Runtime.getRuntime().exec("cmd /c pg_dump -v -a -d "+database+" -h "+server+" -p "+port+" -U "+user+" -n public > " + file.getPath());
p.waitFor();
}catch(Exception e){
return false;
}
});这是可行的,并创建了备份文件。但是,在我的应用程序运行时,文件大小是0KB。在我关闭Java应用程序之后-备份文件有其正常大小。
我不明白问题出在哪里
发布于 2018-02-13 14:00:16
我很抱歉,但我很难解释这一点。
在我的应用程序中,我尝试使用来自pg_dump的PostgreSQL创建一个数据库垃圾文件。如果启动转储进程,那么在关闭整个应用程序之后将创建该文件。
我希望我能解释清楚
我试着预定义文件的路径。但也是同样的错误。我还使用了ProcessBuilder整数。
问题是我在pg_dump命令中使用了pg_dump选项。如果没有这个选项,它可以正常工作,文件将立即创建。
这是详细输出的选项。下面是我的最后一个方法,它运行良好:
Process process = new ProcessBuilder("pg_dump", "-a", "-d", database, "-h", server, "-p", port, "-U", user, "-f", file.getPath()).start();
process.waitFor();发布于 2018-02-07 11:57:20
我猜想这可能与file和您处理它的方式有关(我的猜测是基于代码中的file.getPath() )。
但是,你还没有发布整个代码.所以,我唯一能做的就是猜。
使用预定义的文件名(比如c:\\myfilename.dmp)尝试相同的代码。
例如p = Runtime.getRuntime().exec("cmd /c pg_dump -v -a -d "+database+" -h "+server+" -p "+port+" -U "+user+" -n public > c:\\myfilename.dmp"
它是怎么表现的?
https://stackoverflow.com/questions/48662541
复制相似问题