如何在 Codeigniter 3 中连接到 POSTGRESQL?

Posted

技术标签:

【中文标题】如何在 Codeigniter 3 中连接到 POSTGRESQL?【英文标题】:How to connect to POSTGRESQL in Codeigniter 3? 【发布时间】:2017-01-29 06:55:14 【问题描述】:

我正在尝试使用 Codeigniter 框架连接到 PostgreSQL。 现在在我的 database.php

我有以下代码:

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'postgres',
    'password' => '',
    'database' => 'fmsdb',
    'dbdriver' => 'postgre',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

但是当我在 localhost 中运行我的网站时,我收到以下数据库错误:

遇到了 php 错误

严重性:警告

消息:pg_connect():无法连接到 PostgreSQL 服务器:可以 未连接到服务器:权限被拒绝服务器是否在主机上运行 "localhost" (::1) 并接受端口 5432 上的 TCP/IP 连接?可以 未连接到服务器:权限被拒绝服务器是否在主机上运行 "localhost" (127.0.0.1) 并接受端口 5432 上的 TCP/IP 连接?

文件名:postgre/postgre_driver.php

行号:154

我试着把它放在我的 PostgreSQL.conf 文件中:

listen_addresses = '*'

我哪里出错了?

【问题讨论】:

这会有所帮助:***.com/questions/29630851/… 添加 postgreSQL 端口 $db['default']['port'] = 5432; 也启用了 php ini 的 ext。 extension=php_pdo_pgsql.dll 如何在centos7中启用这个扩展 【参考方案1】:

首先在php.ini中启用Postgresql扩展

extension=php_pgsql.dll

您也可以为 PDO 启用 Postgresql 扩展。

extension=php_pdo_pgsql.dll


$db['default'] = array(
    'port'   => 5432, # Add 
);

$db['default'] = array(
    'dsn'   => 'pgsql:host=localhost;port=5432;dbname=database_name', 
    'dbdriver' => 'pdo',
);

Database-configuration in codeigniter.com

【讨论】:

我认为我的 pgsql 已经加载,因为我已经安装了 phpPGAdmin 并且它工作正常 你也可以建议重启APACHE,这对其他人有帮助。我想。 :)【参考方案2】:

使用 Codeigniter 4、PHP 7.3 和 PostgreSQL 9.3.5 测试

1) 在你的 php.ini 中启用

extension=php_pgsql.dll

2) 在 app/Config/Database 类中覆盖您的 $default 属性,如下所示:

/**
 * The default database connection.
 *
 * @var array
 */

public $default = [
    'DSN'      => '',
    'hostname' => 'your_host',
    'username' => 'your-user',
    'password' => 'your-password',
    'database' => 'your-database',
    'DBDriver' => 'postgre',
    'DBPrefix' => '',
    'pConnect' => false,
    'DBDebug'  => (ENVIRONMENT !== 'production'),
    'cacheOn'  => false,
    'cacheDir' => '',
    'charset'  => 'utf8',
    'DBCollat' => 'utf8_general_ci',
    'swapPre'  => '',
    'encrypt'  => false,
    'compress' => false,
    'strictOn' => false,
    'failover' => [],
    'port'     => 5432, //the default port 
];

【讨论】:

【参考方案3】:

    首先启用这两个扩展

    extension=php_pgsql.dll
    extension=php_pdo_pgsql.dll
    
    然后重启apache 在 database.php 文件中添加 $db['default']['port'] = 5432 和所有其他代码。

【讨论】:

我用的是centos 7这些设置会一样吗? 我认为我的 pgsql 已经加载,因为我已经安装了 phpPGAdmin 并且它工作正常 检查您的 phpinfo。如果 pdo_pgsql & pgsql 可用,那么我认为不会有错误。如果没有运行 yum list "php*" 来获取可用的 php 包。在这里你找到了像 php5-pgsql/php-pdo_pgsql/php-pgsql 这样的包。然后运行安装包 yum install php-pgsql & yum install php-pdo_pgsql。然后重启apache。

以上是关于如何在 Codeigniter 3 中连接到 POSTGRESQL?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上的 Python 3 中连接到 MySQL?

如何在bash中连接到wifi?

如果在 Android 中连接到 BLE 设备失败,如何通知用户?

如何在中等信任环境中连接到当前的 FormsAuthenticationModule?

如何在 PySpark 中连接到 Presto JDBC?

如何在 Python 中连接到 MySQL 数据库?