2012-11-16 15 views
5

私は問題を説明しようとしています!PHP PDO PGSQL - SQLSTATE [HY000]:一般的なエラー:7サーバーへの接続がありません

私はpgpool-IIによってPostgreSQLに接続するためにPDO拡張を使用します。これは、Apache内で正常に動作しますが、PHP CLIから(同じマシン上で)私はこのPDOのエラーが表示されます。

SQLSTATE [HY000]:一般的なエラー:7私はすでに検索しました

サーバーへの接続なしGoogleとここにはありますが、誰もこれをやろうとしたことはないようです。誰にも分かりますか?

EDIT:

これは私が接続を確立するために使用するコードです:

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

.... 
+0

まあ、あなたがサーバへの接続を持っていないと言っています。どのように接続していますか、それを確認してどうやって共有するのが良い情報になるのでしょうか。 –

+0

pgpollを使用する場合、confファイルに接続を設定する必要があります。 pgadmin3を使用してpostgresqlサーバーにアクセスしようとしましたか?それが成功すれば、あなたのconfの設定に問題があると思います。 – Ahmad

答えて

3

試用版


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