php - 连接 cakephp 2.0 与 PostgreSQL

标签 php postgresql cakephp cakephp-2.0

我正在使用 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' => ''
 );

我什至试过这个:

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

我的 pga_hba.config 文件是:

 TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

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

我有两个:

php_pdo_pgsql.dll
php_pdo_sqlite.dll

我的配置 Postgres 配置文件是:

listen_addresses = '*'      # what IP address(es) to listen on;
                    # comma-separated list of addresses;
                    # defaults to 'localhost', '*' = all
                    # (change requires restart)
port = 5432             # (change requires restart)
max_connections = 100           # (change requires restart)
# Note:  Increasing max_connections costs ~400 bytes of shared memory per 
# connection slot, plus lock space (see max_locks_per_transaction).
#superuser_reserved_connections = 3 # (change requires restart)
#unix_socket_directory = ''     # (change requires restart)
#unix_socket_group = ''         # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation
                    # (change requires restart)
#bonjour_name = ''          # defaults to the computer name
                    # (change requires restart)

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

[PostgresSQL]
; Allow or prevent persistent links.
; http://php.net/pgsql.allow-persistent
pgsql.allow_persistent = On

; Detect broken persistent links always with pg_pconnect().
; Auto reset feature requires a little overheads.
; http://php.net/pgsql.auto-reset-persistent
pgsql.auto_reset_persistent = Off

; Maximum number of persistent links.  -1 means no limit.
; http://php.net/pgsql.max-persistent
pgsql.max_persistent = -1

; Maximum number of links (persistent+non persistent).  -1 means no limit.
; http://php.net/pgsql.max-links
pgsql.max_links = -1

; Ignore PostgreSQL backends Notice message or not.
; Notice message logging require a little overheads.
; http://php.net/pgsql.ignore-notice
pgsql.ignore_notice = 0

; Log PostgreSQL backends Noitce message or not.
; Unless pgsql.ignore_notice=0, module cannot log notice message.
; http://php.net/pgsql.log-notice
pgsql.log_notice = 0

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

extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pgsql.dll

最佳答案

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

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

listen_addresses = '*'

.. 然后重新启动。

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

但我现在猜完了。您需要提供错误消息。

关于php - 连接 cakephp 2.0 与 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9639080/

相关文章:

cakephp - 鉴于 cakephp 调用函数

php - CakePHP ajax 表单更新复制页面

php - 用动态内容填充网站的一部分

PHP 数组无法正确从 php 文件中提取数据

javascript - 如何检查至少一个复选框被选中

php - Guzzle 6 下载进度

sql - 有没有办法将一列定义为另外两列的总和?

javascript - 无法解析来自服务器的 Cakephp Jquery Datatable JSON 数据

ruby-on-rails - Rails 应用程序无法连接到 postgresql,但 rake、rails c 和 rails db 可以

sql - 如何获取一列中具有最大值的行?