thinkphp链接pgsql

本文介绍了使用ThinkPHP连接PostgreSQL数据库的步骤,包括在PHP扩展中启用php-pgsql,修改PostgreSQL的pg_hba.conf配置以允许远程连接,并解决了因配置错误导致的连接失败问题。详细步骤包括添加IP到pg_hba.conf,以及解决密码验证问题。

步骤:

1.(PHP扩展及设置-PHP扩展)中选中php-pgsql

2.PostgreSQL数据库的安装目录下找到/data/pg_hba.conf,找到“# IPv4 local connections:”

在其下加上请求连接的机器IP

host    all            all            xxx.xxx.xxx.xxx/32            md5


问题解决过程:

1.php版本问题,可能缺少相关的.dll文件,由php5.3切换至5.5n就不存在问题了(解决系统不支持pgsql问题)

Extension(PHP扩展及设置-PHP扩展)中选中php-pgsql

2.直接利用工程下的index.php文件进行链接(而非通过config.php文件)注释thinkphp所有相关,只有以下代码,替换后出现连接不成功的错误。(FATAL: no pg_hba.conf entry for host "192.168.0.123", user"postgres", database "postgres" FATAL: no pg_hba.conf entryfor host "192.168.0.123", user "postgres", database"postgres"

· <?php  

·    $host        = "host=xxx.xxx.xxx.xxx";  

·    $port        = "port=5432";  

·    $dbname      = "dbname=postgres";  

·    $credentials = "user=postgres password=postgres";  

·    echo $host;  

·   

·    $db = pg_connect( "$host $port $dbname $credentials");  

·    if(!$db){  

·       echo "Error : Unable to connect PostgreSQL\n";  

·    } else {  

·       echo "connect PostgreSQL successfully\n";  

·    }  

· ?>  

3.以上问题查询可知是pgsql安全访问问题。

PostgreSQL数据库为了安全,它不会监听除本地以外的所有连接请求,当用户通过JDBC访问是,会报一些如下的异常:

org.postgresql.util.PSQLException:FATAL: no pg_hba.conf entry for host

 

要解决这个问题,只需要在PostgreSQL数据库的安装目录下找到/data/pg_hba.conf,找到“# IPv4 local connections:”

在其下加上请求连接的机器IP

host allall 127.0.0.1/32 md5

32是子网掩码的网段;md5是密码验证方法,可以改为trus

 

4.最后成功

# IPv4local connections:

host    all             all             xxx.xxx.xxx/32            md5

直接copy文件上面的,然后把127.0.0.1替换成xxx.xxx.xxx.xxx(自己的ip),不要因为没有对齐删除空格,会出错。


### ThinkPHP 6.0 连接 PostgreSQL 数据库教程 在 ThinkPHP 6.0 中连接到 PostgreSQL 数据库涉及编辑配置文件并提供必要的连接参数。具体操作如下: #### 编辑数据库配置文件 找到项目的 `config/database.php` 文件,在此文件中定义与 PostgreSQL 相关的连接选项。以下是具体的配置实例[^1]。 ```php return [ // 设置默认使用的数据库连接 'default' => 'pgsql', // 定义多个数据库连接,这里只展示 pgsql 的部分 'connections' => [ 'pgsql' => [ // 数据库类型 'type' => env('database.type', 'pgsql'), // 主机地址 'hostname' => env('database.hostname', 'your_host'), // 数据库名 'database' => env('database.database', 'your_database_name'), // 用户名 'username' => env('database.username', 'your_username'), // 密码 'password' => env('database.password', 'your_password'), // 端口,默认为5432 'hostport' => env('database.hostport', '5432'), // 字符集 'charset' => env('database.charset', 'utf8') ], ] ]; ``` 这段代码展示了如何指定一个名为 `'pgsql'` 的连接,并设置了相应的属性来指向特定的 PostgreSQL 实例。注意使用了环境变量作为默认值,这有助于提高安全性并方便不同环境下部署时修改配置。 当存在主从服务器的情况下,如果两个服务器上的某些参数不一致,则需要分别为它们设定独立的部分;反之则只需共享同一组设置即可[^2]。 完成以上更改之后保存文件重启应用程序使新配置生效。此时应该能够成功建立同 PostgreSQL 数据库之间的通信链路。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值