1

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

目前,我有一个 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并查看创建的数据库。

有谁知道问题是什么?

4

1 回答 1

0

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

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

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