2012-05-24 24 views
0

在NSIS安裝程序中,我使用以下行從與安裝程序一起打包的文件還原PostgreSQL數據庫。運行pg_restore或psql命令的NSIS - 無法正確還原數據庫

ExecWait '$pg_restore_path --host 127.0.0.1 --no-password --port 5432 --username "postgres" --dbname "myDatabase" --verbose $EXEDIR/myDatabase.backup' $0 

的命令工作,但pg_restore在似乎不正確地設置某些postgres的序列的電流值(電流值要麼得到復位爲1或更低的數量比源的),從而導致衝突。這似乎是與postgres本地錯誤,但真的不知道。

我也曾嘗試用psql更換pg_restore的是這樣的:

ExecWait '$psql_path -f "$EXEDIR/myDatabase.sql" myDatabase' 

不工作;終端會彈出並關閉。或者是這樣的:

ExecWait '$psql_path myDatabase < $EXEDIR/myDatabase.sql' 

當我從它就像一個魅力的命令行手動運行psql命令,它會導致錯誤psql: warning: extra command-line argument "<" ignored

和序列正確設置。所以我的問題是如何讓psql命令在NSIS中運行,文件爲<,並避免了錯誤。如果不這樣做,任何關於使用pg_restore不同的見解可以解決序列問題?

謝謝

回答

1

下面的NSIS命令似乎已經解決了它。

ExecWait '$createdb_path -h "127.0.0.1" -p "5432" -U "postgres" -T "template1" --owner "user_owner" myDatabase' 
ExecWait '$psql_path -f "$INSTDIR/myDatabase.sql" myDatabase user_owner'