从 groovy 脚本运行时,Postgresql createdb 命令挂起
Posted
技术标签:
【中文标题】从 groovy 脚本运行时,Postgresql createdb 命令挂起【英文标题】:Postgresql createdb command hanging when running from groovy script 【发布时间】:2013-08-05 19:37:38 【问题描述】:我尝试了几种不同的方法来让它运行,但都没有成功!
目前,我有一个 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】:最可能的问题是没有看到环境变量并挂起等待密码。
我认为你有两个选择。第一种是继续 shell 转义并尝试使用 .pgpass 文件,但另一种是连接到 postgres(或其他现有数据库)并手动创建数据库。为此,发出以下 SQL:
CREATE DATABASE myDatabaseName WITH TEMPLATE template0 ENCODING utf8;
【讨论】:
以上是关于从 groovy 脚本运行时,Postgresql createdb 命令挂起的主要内容,如果未能解决你的问题,请参考以下文章