从groovy脚本运行时,Postgresql createdb命令挂起

时间:2013-08-05 19:37:39

标签: postgresql groovy postgresql-9.2

我已经尝试了几种不同的方式来运行它,但都没有成功!

目前,我有一个groovy脚本试图像这样执行Postgresql(9.2)'createdb'命令:

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并看到创建的数据库。

任何人都知道问题是什么?

1 个答案:

答案 0 :(得分:0)

最有可能的问题是创建没有看到环境变量并挂起等待密码。

我认为你有两种选择。第一种是继续shell转义并尝试使用.pgpass文件,但另一种是连接到postgres(或其他现有数据库)并手动创建数据库。为此,请发出以下SQL:

 CREATE DATABASE myDatabaseName WITH TEMPLATE template0 ENCODING utf8;