【问题标题】:Connecting php to postgres将php连接到postgres
【发布时间】:2014-07-21 00:32:15
【问题描述】:

我有一个运行 PostgreSQL 的虚拟机(具体来说是 pgAdmin III),我正在尝试使用红豆连接它但没有成功。它似乎确实可以连接,但是当我发送一些东西供数据库存储时,我得到一个错误......这是我的代码:

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
include 'php/third-party/rb.php';
R::setup('pgsql:host=localhost;dbname=mydb',
        '(DBUser)','(MyPassword)');
$book = R::dispense( 'book' );
$book->title = 'Learn to Program';
$book->rating = 10;
$book['price'] = 29.99;
$id = R::store( $book );
?>

我认为它与代码无关。这是抛出的错误:

“致命错误:未捕获的异常 'PDOException' 带有消息 'Could 未连接到数据库 (mydb)。'..."

【问题讨论】:

  • 您的 PHP 脚本是否与 PostgreSQL 在同一台机器上运行?
  • ... 是最重要的一点。是你漏掉了,还是申请了?

标签: php database postgresql connection


【解决方案1】:

这看起来有点奇怪:

R::setup('pgsql:host=localhost;dbname=mydb',
    '(DBUser)','(MyPassword)');

尝试删除 DBUserMyPassword 周围的括号。

如果还是不能解决,你的 php 可能没有安装 php5-pgsql。

你可以用这个命令安装它(假设你的服务器是 debian 风格的):

sudo apt-get install php5-pgsql

【讨论】:

  • 非常感谢!就是这样! (DBuser)和(Mypassword)只是占位符的东西,可能没用担心我只是不想提供这些信息。这虽然有效!非常感谢。
【解决方案2】:

这里有几点需要考虑:

  1. “代码似乎可以连接”是什么意思?消息说“无法连接...” R::setup 和 R::dispense 调用不会尝试连接。 R::store 调用尝试连接。我想这就是你的错误弹出的地方。

  2. 正如@ChrisForrence 的评论所问:您是否在与数据库服务器相同的机器上运行脚本?如果不是,您必须更改连接字符串中的“localhost”。

  3. 您可以使用标准的 postgres cli 工具 (psql) 进行连接吗?

  4. 您是否安装了 PDO postgresql 驱动程序?

  5. 您是否在 SELinux 环境中运行并且您的脚本是否由 apache 进程运行?如果是这样,apache进程的安全上下文是否允许它与postgresql服务器建立连接?

检查这些问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 2020-03-03
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    相关资源
    最近更新 更多