首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Inno Setup exec函数中的命令传递到pgsql数据库

将Inno Setup exec函数中的命令传递到pgsql数据库
EN

Stack Overflow用户
提问于 2016-06-08 20:41:49
回答 1查看 935关注 0票数 1

我正在运行以下代码,试图从Inno安装脚本读取的文件中创建PostgreSQL数据库中的用户。不幸的是,执行的唯一命令是SET PGPPASSWORD-U postgres elt命令,它们将我连接到数据库。我需要在数据库中运行的其他命令被忽略了,而且我似乎无法找到将它们输入数据库的方法。是否有字符可用于将命令输入到PostgreSQL数据库?

代码语言:javascript
复制
ExecAsOriginalUser('cmd.exe', '/k ' +'"SET PGPASSWORD=postgres&"' + 
    InstallPath+ '\psql -U postgres elt -c '+ 'CREATE USER ' 
    + Users[UserCount - 1] + ' WITH PASSWORD ' + '''' 
    + Password + '''' + '& ' + '\g', '', SW_SHOW, ewWaitUntilIdle, ResultCode);

命令行输出:

代码语言:javascript
复制
psql: warning: extra command-line argument "-c" ignored
"": extra command-line argument "CREATE" ignored
"": warning: extra command-line argument "USER" ignored
"": extra command-line argument "postgres" ignored
"": extra command-line argument "WITH" ignored
"": extra command-line argument "PASSWORD" ignored
"": extra command-line argument "'postgres'\g" ignorepsql 
(9.5.3) WARNING: Console code page (437) differs from    
Windows code page 
(1252) 8-bit characters might not work correctly. See psql reference page    
"Notes for Windows users" for details.
Type "help" for help.
db=#
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-09 12:56:31

您可能只需要将SQL包装为双引号:

代码语言:javascript
复制
ExecAsOriginalUser('cmd.exe',
    '/c SET PGPASSWORD=postgres& '
    + InstallPath + '\psql -U postgres elt -c "CREATE USER ' 
    + Users[UserCount - 1] + ' WITH PASSWORD ''' + Password + '''"',
    '', SW_SHOW, ewWaitUntilIdle, ResultCode);

首先,通过在命令行上运行以下命令来验证它:

代码语言:javascript
复制
cmd.exe /c SET PGPASSWORD=postgres& C:\eltfiles\pgsql\bin\psql -U postgres elt -c "CREATE USER postgres WITH PASSWORD 'postgres'"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37712525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档