1

これを実行するためにいくつかの異なる方法を試しましたが、すべて失敗しました!

現在、Postgresql (9.2) の「createdb」コマンドを次のように実行しようとする groovy スクリプトがあります。

def createDbCmdLine = "-p 5433 --encoding=UTF8 --template=template0 myDatabaseName"
ant.exec(executable:'fullpath/bin/createdb') {
    arg(line: "$createDbCmdLine")
    env(key:"PGPASSWORD", value:"myPassword")
}

ただし、これは永久にハングします。文字列を作成して実行しようとしたとき:

["sh", "-c", theStringHere].execute()

結果は同じでした-永遠にハングします。ただし、この場合、文字列を印刷しました。コマンドラインで(直接または「sh -c」を介して)それを実行すると、完全に機能しました-コマンドが完了した後、「psql」を介してpostgresqlに入り、\lを実行して、作成されたデータベースを確認できます。

誰が問題が何であるか知っていますか?

4

1 に答える 1

0

最も可能性の高い問題は、環境変数が表示されず、パスワードの待機中にハングアップすることです。

あなたには2つの選択肢があると思います。1 つ目は、シェル エスケープを続行して .pgpass ファイルの使用を試みることですが、もう 1 つ目は、postgres (または他の既存のデータベース) に接続してデータベースを手動で作成することです。これを行うには、次の SQL を発行します。

 CREATE DATABASE myDatabaseName WITH TEMPLATE template0 ENCODING utf8;
于 2013-11-07T05:09:10.733 に答える