猿问

Postgres createdb 从 php exec 运行

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

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

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

(简化转义)

但这会返回一个错误:
createdb: could not connect with template1: FATAL: Password authentication for user »postgres« failed (translated)

我不熟悉命令行及其特性 ->
我不确定我是否在那里犯了一个严重的未被注意到的错误,如果我犯了,我很抱歉

我现在将实现一个 Postgres 再次询问用户的版本,
但如果你找到一个用户不必输入两次密码的解决方案,那就太酷了



郎朗坤
浏览 150回答 1
1回答

慕工程0101907

为什么要使用操作系统命令?你可以用 SQL 做同样的事情:只需连接到postgres数据库(或任何其他数据库)并运行CREATE DATABASE dbname
随时随地看视频慕课网APP
我要回答