如何在 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?
如果在 Android 中连接到 BLE 设备失败,如何通知用户?