2012-11-16 13 views
5

Próbuję wyjaśnić problem, który mam !!!PHP PDO PGPOOL PGSQL - SQLSTATE [HY000]: Ogólny błąd: 7 brak połączenia z serwerem

Używam rozszerzenia PDO do łączenia się z PostgreSQL poprzez pgpool-II. To działa dobrze w ciągu Apache, ale z PHP CLI (na tej samej maszynie) otrzymuję ten błąd PDO:

SQLSTATE [HY000]: Błąd ogólny: 7 brak połączenia z serwerem

już poszukiwany w Google i tutaj, ale wygląda na to, że nikt nigdy nie próbował tego zrobić. Czy ktokolwiek ma jakiś pomysł?

EDIT:

Jest to kod używam do ustanowienia połączenia:

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 jest moje własne klasy, która realizuje kilka funkcji użytkowych, jak również utworzyć połączenie z bazą danych:

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); 
     } 

.... 
+0

dobrze, to mówią, że nie ma połączenia z serwerem. W jaki sposób łączysz się i jak sprawdzasz, czy działało byłoby dobre informacje do udostępnienia. –

+0

Podczas korzystania z pgpoll, musisz ustawić połączenie w pliku conf. Czy próbowałeś uzyskać dostęp do serwera PostgreSQL za pomocą pgadmin3? jeśli to jest sukces, to myślę, że problem leży w ustawieniu conf. – Ahmad

Odpowiedz

3

Spróbuj tego


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); 
    } 
} 
?>