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 のネイティブ バグのようですが、よくわかりません。
また、次のように pg_restore を psql に置き換えてみました。
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
ありがとう