コード内の不要なコマンド
を使用してバックアップを行う場合は、およびLAUNCH EXTERNAL PROCESS
は必要ありません。PgSQL CONNECT
PgSQL CLOSE
これらのプラグイン コマンドは、同じコンテキストでは実行されないためLAUNCH EXTERNAL PROCESS
、この状況では不要です。
書き込みアクセス権があることを確認してください
4D データベースがサービスとして実行されている場合、より具体的には への書き込みアクセス権を持たないユーザーとして実行されている場合C:\Users\Admin_user\...
、パーミッションの問題により失敗する可能性があります。
書き込みアクセス権のある場所に書き込んでいることを確認し、パラメータ$out
と$err
パラメータをチェックして、標準出力とエラー ストリームが何であるかを確認してください。
pg_dump のパスワードを指定する必要があります
もう 1 つの問題は、パスワードを指定していないことです。
PGPASSWORD
環境変数を使用するかpgpass.conf
、ユーザーのプロファイル ディレクトリ内のファイルを使用できます。
PGPASSWORD
環境変数について; ドキュメントには次の警告があります。
一部のオペレーティング システムでは、root 以外のユーザーが ps を介してプロセス環境変数を参照できるため、この環境変数の使用はセキュリティ上の理由からお勧めしません。代わりに ~/.pgpass ファイルの使用を検討してください
pgpass.conf の使用例
次の例では、pgpass.confファイルが配置されていることを前提としています。
C_TEXT($c;$in;$out;$err)
$c:="C:\\Program Files\\PostgreSQL\\9.5\\bin\\pg_dump.exe -h localhost -p 5432 -U admin -F"
$c:=$c+" c -b -v -f C:\\Users\\Admin_user\\Desktop\\backup_test\\db_backup.backup test_db"
LAUNCH EXTERNAL PROCESS($c;$in;$out;$err)
TRACE
PGPASSWORD 環境変数の使用例
次の例では、 pg_dump を呼び出す前にPGPASSWORD
環境変数を設定し、呼び出し後に変数をクリアします。
C_TEXT($c;$in;$out;$err)
SET ENVIRONMENT VARIABLE ( "PGPASSWORD" ; "your postgreSQL password" )
$c:="C:\\Program Files\\PostgreSQL\\9.5\\bin\\pg_dump.exe -h localhost -p 5432 -U admin -F"
$c:=$c+" c -b -v -f C:\\Users\\Admin_user\\Desktop\\backup_test\\db_backup.backup test_db"
LAUNCH EXTERNAL PROCESS($c;$in;$out;$err)
SET ENVIRONMENT VARIABLE ( "PGPASSWORD" ; "" ) // clear password for security
TRACE
デバッグ
デバッガーを使用して、根本的な問題を確認$out
してください。$err