2012-11-16 7 views
5

Ich versuche, das Problem zu erklären, das ich habe !!!PHP PDO PGPOOL PGSQL - SQLSTATE [HY000]: Allgemeiner Fehler: 7 keine Verbindung zum Server

Ich benutze PDO-Erweiterung, um mit PostgreSQL über pgpool-II zu verbinden. Es funktioniert gut, innerhalb von Apache, aber von PHP CLI (auf der gleichen Maschine) Ich erhalte dieses PDO Fehler:

SQLSTATE [HY000]: Allgemeiner Fehler: 7 keine Verbindung zum Server

ich schon gesucht auf Google und hier, aber es scheint, dass niemand jemals versucht hat, dies zu tun. Hat jemand eine Idee?

EDIT:

Dies ist der Code, den ich verwenden, um eine Verbindung herzustellen:

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 ist meine eigene Klasse, die die Datenbankverbindung einige Hilfsfunktionen erstellen sowie implementiert:

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

Nun, es ist zu sagen Sie nicht über eine Verbindung zum Server haben. Wie verbinden Sie sich und wie überprüfen Sie, ob es funktioniert hat, wäre eine gute Information, die Sie teilen könnten. –

+0

Wenn Sie pgpoll verwenden, müssen Sie die Verbindung in der Datei conf festlegen. Haben Sie versucht, mit pgadmin3 auf Ihren PostgreSQL-Server zuzugreifen? Wenn es erfolgreich ist, dann denke ich, dass das Problem in Ihrer Conf-Einstellung ist. – Ahmad

Antwort

3

Versuchen Sie diese


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