java調用pg_dump備份postgre數據庫問題



java調用pg_dump備份postgre數據庫問題

在項目中,用java調用pg_dump進行postgre數據庫備份,在本地機上跑,可以正確運行,發布
到其他機器上之后,會在調用外部程序,進行備份的地方卡住,代碼如下:


/**備份數據庫**/

File workPath=fetchDBInstallPath();//獲取數據庫的pg_dump工具的目錄
if(workPath==null){
return false;

}
String dbBackupPath=fetchDBBackupPath();
StringBuffer sb=new StringBuffer();

sb.append( cmd /c pg_dump -h 127.0.0.1 -p 5432 -U postgres -F c -b -v
-f ).append(dbBackupPath+ \\ +fileName+ .backup ).append( dbname );

log.info( ********************************************** );

log.info( workPath= +workPath); www.docin.com

log.info( command: +sb.toString());


log.info( ********************************************** );

Process
process=Runtime.getRuntime().exec(sb.toString(),null,workPath);
log.info( ~~~~~~~~~~~~~~~~~~~~~~~~~~~ );

StreamGobbler errorGobbler = new
StreamGobbler(process.getErrorStream(), Error ); //線程,用於輸出外部程序的輸
出內容,防止阻塞


StreamGobbler outputGobbler = new
StreamGobbler(process.getInputStream(), Output ); //線程,用於輸出外部程序的輸
出內容,防止阻塞


log.info( +++++++++++++++++++++++++++ );


errorGobbler.start();


outputGobbler.start();


process.waitFor();


if(process.exitValue()!=0){


return false;


} www.docin.com


從部署機器上的日志來看,運行完成了log.info( +++++++++++++++++++++++++++ );

之后,線程沒有正確運行,也就是說,應該是外部程序被阻塞了,然后我把命令行中的-v參數
去掉,不讓外部程序輸出內容,可還是會陰塞,具體日志如下:

2012-10-12 10:23:43.551 INFO] **********************************************
2012-10-12 10:23:43.551 INFO] workPath=C:\Program
Files\hikvision\CMS\database\bin


2012-10-12 10:23:43.551 INFO] command:cmd /c pg_dump -h 127.0.0.1 -p 5432 -U
postgres -F c -b -v -f c:\backup\test.backup 5221cms


2012-10-12 10:23:43.551 INFO] **********************************************


2012-10-12 10:23:43.711 INFO] ~~~~~~~~~~~~~~~~~~~~~~~~~~~

2012-10-12 10:23:43.711 INFO] +++++++++++++++++++++++++++
------最佳解決方案--------------------------------------------------------


在命令前添加一行
www.docin.com

set PGPASSWORD= password


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM