我已经尝试了几种不同的方式来运行它,但都没有成功!
目前,我有一个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并看到创建的数据库。
任何人都知道问题是什么?
答案 0 :(得分:0)
最有可能的问题是创建没有看到环境变量并挂起等待密码。
我认为你有两种选择。第一种是继续shell转义并尝试使用.pgpass文件,但另一种是连接到postgres(或其他现有数据库)并手动创建数据库。为此,请发出以下SQL:
CREATE DATABASE myDatabaseName WITH TEMPLATE template0 ENCODING utf8;