postgresql - "FATAL: no pg_hba.conf entry for host"但我可以通过 pgAdmin 连接

标签 postgresql cakephp heroku xampp

我在基于 CakePHP 的项目的开发环境中遇到了一些问题。 问题是,CakePHP 可以在生产环境中连接,但是如果我在我的 PC 上运行 XAMPP,就会抛出一个 fatal error :没有主机“myexternalip”、用户“dbuser”、数据库“dbname”、SSL 关闭的 pg_hba.conf 条目

但使用相同的参数,我可以通过 pgAdmin 从我的 PC 进行连接。

我尝试了一些我发现的谷歌搜索技巧,比如将 libpq.dllc:\xampp\php 复制到 c:\xampp\apache\bin 但是,运气不好,已经检查过 pnp.iniextension=php_pdo_pgsql.dll 行未注释,曾多次尝试重启 apache 但没有变化

项目托管在heroku平台下,我的/app/config/database.php是这样的

public $production = array(
    'datasource' => 'Database/Postgres',
    'persistent' => false,
    'host' => 'anywhere.at.amazonaws.com',
    'login' => 'dbuser',
    'password' => 'dbpwd',
    'database' => 'dbname',
    'encoding' => 'utf8',
);

这是堆栈跟踪

- CORE\Cake\Model\Datasource\DboSource.php line 260 → Postgres->connect()
- CORE\Cake\Model\ConnectionManager.php line 105 → DboSource->__construct(array)
- CORE\Cake\Model\Model.php line 3613 → ConnectionManager::getDataSource(string)
- CORE\Cake\Model\Model.php line 1155 → Model->setDataSource(string)
- CORE\Cake\Model\Model.php line 3640 → Model->setSource(string)
- CORE\Cake\Model\Model.php line 827 → Model->getDataSource()

任何人都可以给我另一个可能有帮助的提示吗?

最佳答案

一段时间后我找到了解决方案。

问题是这并不简单。

由于 Postgres 服务器托管在 heroku 平台下,服务器上的默认配置是 require ssl,所以我遇到了这个配置:

public $production = array(
    ......
    'sslmode' => 'require',
);

现在错误已更改为 sslmode value "require"invalid when ssl support is not compiled

然后我用谷歌搜索了一下,似乎至少在 XAMPP v5.5.19 下,PHP 文件夹中的 libpq.dll 没有使用 ssl 支持编译

这是帮助我解决这个问题的问题: How to installPostgreSQL client library for PHP on Windows with SSL enabled

似乎 pgAdmin 的 libpq.dll 是用 ssl 支持编译的,所以这就是我可以通过 pgAdmin 而不是 php 连接的原因

谢谢大家的帮助!

关于postgresql - "FATAL: no pg_hba.conf entry for host"但我可以通过 pgAdmin 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29738989/

相关文章:

mysql - CakePHP 3 引用我的 find() 调用的 'fields' 配置中定义的函数名称

validation - FuelPHP 中类似 CakePHP 的验证

mysql - 使用 cakephp 和 mysql 进行连接的 OR 条件

ruby-on-rails - 如何查询双belongs_to关联

ruby-on-rails - 如何加速 Rails 4 中的动态选择

sql - 创建一个触发器,可以将table1中添加的值添加到table2中

heroku - 在 Heroku 上恢复 Redis 到 Go DB

ruby-on-rails - Heroku 上的 Puma 集群配置

ruby-on-rails - 使用 SQLite3 将 Rails 推送到 Heroku 失败

ruby - 使用 Ruby On Rails 拍摄 html 页面的快照