【问题标题】:Connecting cakephp 2.0 with PostgreSQL连接 cakephp 2.0 和 PostgreSQL
【发布时间】:2012-03-27 04:48:36
【问题描述】:

我正在使用 cakephp 2.0 和 wamp 服务器。我在 php 中启用了 postgres 的 pdo,并尝试连接到 Postgres。但是它仍然说有一个错误。我的登录名和密码也被双重确认。

下面是database.php文件的代码:

public $default = array(
  'datasource' => 'Database/Postgres',
  'persistent' => false,
  'host' => 'localhost',
  'port' => '5432',
  'login' => 'postgres',
  'password' => 'password',
  'database' => 'Test',
  'schema' => '',
  'prefix' => '',
  'encoding' => ''
 );

我什至试过这个:

公共 $default = 数组( '数据源' => '数据库/Postgres', '持久' => 假, '主机' => '本地主机', '端口' => '5432', '登录' => 'postgres', '密码' => '密码', '数据库' => '测试', '模式' => '公共', '前缀' => '', '编码' => '' );

我的 pga_hba.config 文件是:

类型数据库用户 CIDR-地址方法 # IPv4 本地连接: 托管所有 127.0.0.1/32 md5 # IPv6 本地连接: 托管所有::1/128 md5

在 C:\wamp\bin\php\php5.3.9\ext

两个都有:

php_pdo_pgsql.dll php_pdo_sqlite.dll

我的配置 Postgres 配置文件是:

listen_addresses = '*' # 要监听的 IP 地址; # 逗号分隔的地址列表; # 默认为 'localhost', '*' = all #(更改需要重启) port = 5432 #(更改需要重启) max_connections = 100 #(更改需要重启) # 注意:增加 max_connections 每增加约 400 字节的共享内存 # 连接槽,加上锁空间(见 max_locks_per_transaction)。 #superuser_reserved_connections = 3 #(更改需要重启) #unix_socket_directory = '' #(更改需要重启) #unix_socket_group = '' #(更改需要重启) #unix_socket_permissions = 0777 # 以 0 开头以使用八进制表示法 #(更改需要重启) #bonjour_name = '' # 默认为计算机名 #(更改需要重启)

我检查了 php 信息,但我仍然发现 pgsql 不存在。我正在使用 wamp 服务器。

[PostgresSQL] ;允许或阻止持久链接。 ; http://php.net/pgsql.allow-persistent pgsql.allow_persistent = On ;始终使用 pg_pconnect() 检测断开的持久链接。 ;自动重置功能需要一点开销。 ; http://php.net/pgsql.auto-reset-persistent pgsql.auto_reset_persistent = 关闭 ;最大永久链接数。 -1 表示没有限制。 ; http://php.net/pgsql.max-persistent pgsql.max_persistent = -1 ;最大链接数(持久+非持久)。 -1 表示没有限制。 ; http://php.net/pgsql.max-links pgsql.max_links = -1 ;是否忽略 PostgreSQL 后端通知消息。 ;注意消息记录需要一些开销。 ; http://php.net/pgsql.ignore-notice pgsql.ignore_notice = 0 ;是否记录 PostgreSQL 后端 Noitce 消息。 ;除非 pgsql.ignore_notice=0,否则模块无法记录通知消息。 ; http://php.net/pgsql.log-notice pgsql.log_notice = 0

我已经在我的 php.ini 文件中这样做了:

扩展=php_pdo_pgsql.dll 扩展=php_pdo_sqlite.dll 扩展=php_pgsql.dll

【问题讨论】:

  • 与往常一样,错误消息将有助于帮助您。

标签: php postgresql cakephp cakephp-2.0


【解决方案1】:

一探究竟:数据库的名称是Test 还是test?在 PostgreSQL 中,未加引号的标识符被转换为小写。 The manual about that.

黑暗中的下一个镜头:您正在连接到localhost。这不是通过 Unix 域套接字的本地连接。为此,必须将数据库设置为侦听 TCP/IP 连接。所以你需要在你的postgresql.conf:

listen_addresses = '*'

.. 并重新启动。

另外,您的pg_hba.conf 设置需要允许连接。可能是个问题similar to this one
首先阅读精美手册中的Connection Settings 章节。

但我现在猜不透了。您需要提供错误信息。

【讨论】:

  • 配置文件在哪里?我把它保存到 C:\Program Files (x86)\PostgreSQL\8.4
  • 这里是:C:\Program Files (x86)\PostgreSQL\8.4\data
  • 是的,windows下8.4版本应该是:C:\Program Files\PostgreSQL\8.4\data\postgresql.confSee this related answer.
  • 在 cakephp 中它只是说连接到数据库时出错。我添加了更多信息
  • @madi 那么我的想法很新鲜,抱歉。我不是 cakephp 专家,只是 PostgreSQL。
【解决方案2】:

我找到了我的问题的答案 这家伙很有用

http://tutology.net/category/mysql/install-postgresql-and-phppgadmin-windows-wamp

基本上我将 libpq.dll 从 wamp\bin\php\phpX.X.X 复制到 wamp\bin\apache\ApacheX.X.XX\bin

【讨论】:

  • 我按照你的回答,我已经成功了。但我有一个注意。在启用 php.ini 并重新启动服务器之前,我们必须将此文件复制到 Apache/bin。如果我们不这样做,apache 服务器将无法启动。
猜你喜欢
  • 1970-01-01
  • 2014-10-31
  • 1970-01-01
  • 2015-06-20
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
相关资源
最近更新 更多