从 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 命令挂起的主要内容,如果未能解决你的问题,请参考以下文章

从 groovy 脚本调用时将 sessionFactory 注入 grails 服务

从 groovy 脚本使用 Web 服务的问题

soapui中的groovy脚本怎么写

在 groovy 脚本之间传递 webdriver 实例?

如何检查 groovy 脚本的编译错误 [重复]

Groovy内存机制详解