Postgres createdb从php exec运行

时间:2020-01-17 09:18:50

标签: php postgresql command-line

我有一个可以使用
创建数据库的安装脚本 (sql ddl)create database if not exist
由于Postgres的工作方式不同,因此脚本不起作用。
因此,我为Postgres建立了一个特例,并使用了
(命令行)用于生成数据库的createdb -U ...命令。
到目前为止,它仍然有效,但是Postgres第二次请求密码。

this thread之后,我发现了
我可以使用var PGPASSWORD提供密码。
this thread之后,我想出了一个解决方案:
(php)

exec(' set PGPASSWORD=$password && createdb -U "$username" -h "$host" "$dbname" ')

(简化的转义)

但这会返回错误:
createdb:无法与template1连接:致命:用户»postgres«的密码验证失败(翻译)

我不熟悉命令行及其特征->
我不确定我是否在那儿犯了严重的错误,我很抱歉

我现在将实现一个版本,Postgres第二次询问用户,
但是如果您找到了一种无需用户再次输入密码的解决方案,那就太好了

1 个答案:

答案 0 :(得分:0)

为什么要使用操作系统命令?您可以使用SQL执行相同的操作:只需连接到postgres数据库(或任何其他数据库)并运行

CREATE DATABASE dbname