【问题标题】:PHP PDO PGPOOL PGSQL - SQLSTATE[HY000]: General error: 7 no connection to the serverPHP PDO PGPOOL PGSQL - SQLSTATE[HY000]:一般错误:7 没有连接到服务器
【发布时间】:2012-11-05 01:38:20
【问题描述】:

我试着解释我遇到的问题!!!

我使用 PDO 扩展通过 pgpool-II 连接到 PostgreSQL。它在 Apache 中运行良好,但从 PHP CLI(在同一台机器上)我收到此 PDO 错误:

SQLSTATE[HY000]:一般错误:7 没有连接到服务器

我已经在 Google 和这里​​搜索过,但似乎没有人尝试过这样做。有人知道吗?

编辑:

这是我用来建立连接的代码:

include 'manage_db.php';
include_once 'properties.php';
global $properties;

$dsn = 'pgsql:dbname=' . $properties['db_pgpool'] . ';host=localhost;port=' . $properties['port_pgpool'];

try{
   $mgmtDb = new ManageDb($dsn, $properties['username_pgpool'], $properties['password_pgpool']);
} catch (Exception $e) {
   echo 'PDO - Caught exception: ',  $e->getMessage(), "\n";
}

ManageDB 是我自己的类,它实现了一些实用功能以及创建数据库连接:

class ManageDb {
        var $db;

        function ManageDb($dsn, $username, $password){
            $this->db = new PDO($dsn, $username, $password);
            $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }

....

【问题讨论】:

  • 嗯,这是说您没有与服务器的连接。您如何连接以及如何检查它是否有效将是分享的好信息。
  • 使用pgpoll时,需要在conf文件中设置连接。您是否尝试过使用 pgadmin3 访问您的 postgresql 服务器?如果成功,那么我认为问题出在您的 conf 设置中。
  • 你解决了吗?

标签: postgresql pdo pgpool


【解决方案1】:

试试这个


config.database.php

<?php
class DatabaseConfig {

    const DBNAME    = 'dbname';
    const HOST      = '123.1.233.123';
    const USER      = 'mysuperuser';
    const PASSWORD  = 'mysupperparrword';
    const PORT      = 5432; 
}
?>


class.database.php

<?php

include('config.database.php');

class Database {

    protected static $instance = null;

    final private function __construct() {}
    final private function __destruct() {
        self::$instance = null;
    }

    final private function __clone() {}

    public static function getInstance() {
        if (self::$instance === null) {
            try {
                self::$instance = new PDO(
                    'pgsql:host='   . DatabaseConfig::HOST . 
                    ';port='        . DatabaseConfig::PORT . 
                    ';dbname='      . DatabaseConfig::DBNAME . 
                    ';user='        . DatabaseConfig::USER . 
                    ';password='    . DatabaseConfig::PASSWORD
                );
                self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                self::$instance->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
            } catch (PDOException $e) {
                die('Database connection could not be established.');
            }
        }

        return self::$instance;
    }
    public static function __callStatic($method, $args) {
        return call_user_func_array(array(self::instance(), $method), $args);
    }
}
?>

【讨论】:

  • 这很好用,但并不能真正解决问题。
猜你喜欢
  • 2017-06-17
  • 1970-01-01
  • 2013-06-20
  • 2011-12-27
  • 2012-10-24
  • 2012-10-25
  • 2014-12-31
相关资源
最近更新 更多