2013-08-05 143 views
1

我嘗試了幾種不同的方法來讓它運行,但都不成功!Postgresql createdb命令在從groovy腳本運行時掛起

目前,我有嘗試執行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並查看創建的數據庫。

任何人都知道問題是什麼?

回答

0

最有可能發生的問題是無法看到環境變量並掛起等待密碼。

我想你有兩個選擇。首先是繼續shell轉義並嘗試使用.pgpass文件,但另一個是連接到postgres(或其他現有數據庫)並手動創建數據庫。爲此,請發出以下SQL:

CREATE DATABASE myDatabaseName WITH TEMPLATE template0 ENCODING utf8;