在 NSIS 安装程序中,我使用以下行从与安装程序一起打包的文件中恢复 PostgreSQL 数据库。
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: warning: extra command-line argument "<" ignored
当我psql
从命令行手动运行命令时,它就像一个魅力,并且序列设置正确。所以我的问题是如何让psql
命令在 NSIS 中工作并提供文件<
并避免错误。如果做不到这一点,关于使用pg_restore
不同的方法可以解决序列问题的任何见解?
谢谢