2013-08-05 103 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;