【问题标题】:PHP pdo exception "could not find driver" pgsqlPHP pdo 异常“找不到驱动程序”pgsql
【发布时间】:2013-11-19 04:30:54
【问题描述】:

所以当我尝试在我的 Mapper 类的构造函数中创建我的数据库时,我总是得到一个 pdo 异常。 在这一行:

$this->db = new PDO($dsn, $db_config['username'], $db_config['password']);

这是我的 dsn 创作:

    $db_config = array(
    'driver' => 'pgsql',
    'username' => $dbUser,
    'password' => $dbPassword,
    'schema' => 'r0628740',
    'dsn' => array(
        'host' => 'gegevensbanken.khleuven.be',
        'dbname' => '2TX31',
        'port' => '51314',
    )
);

最后是我的构造函数:

public function __construct(){
        global $db_config;
        $dsn = $db_config['driver'] . ':';
        foreach($db_config['dsn'] as $key => $value){
            $dsn .= $key . '=' . $value . ';';
        }
        try{

            $this->db = new PDO($dsn, $db_config['username'], $db_config['password']);
            $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            if(($db_config['driver'] == 'pgsql') && isset($db_config['schema'])){
                $this->db->query(sprintf("SET SEARCH_PATH TO %s"), $db_config['schema']);
            }
        }catch (PDOException $e){
            var_dump($e->getLine());
            error_log($e->getMessage());
        }

    }

【问题讨论】:

  • 我的猜测是 pgsql 驱动没有安装(或者在 php 配置中激活)
  • 可能在 __construct 时 PDO 不可见...或者... phpinfo() 为 PDO 返回什么?

标签: php postgresql exception pdo driver


【解决方案1】:

libpq.dllc:\wamp\bin\php\php5.3.9\libpq.dll 复制到 c:\wamp\bin\apache\Apache2.2.11\bin。对我有用

【讨论】:

    【解决方案2】:

    我在某处找到文章,对我有用。假设您已经安装了 PostgreSQL,并且您的 WAMP 安装在 c:\wamp,您将需要复制:

    c:\wamp\bin\php\php5.3.9\libpq.dllc:\wamp\bin\apache\Apache2.2.11\bin

    确保您还有以下文件:

    C:\wamp\bin\php\php5.3.9\ext\php_pdo_pgsql.dllC:\wamp\bin\php\php5.3.9\ext\php_pgsql.dll

    另外,请确保您已通过 WAMP 菜单启用上述 2 个文件作为扩展名(单击任务栏上的 WAMP 图标:PHP > PHP extensions,找到上述 2 个并“检查”它们)。

    请注意,php5.3.9Apache2.2.11 指的是我的特定 PHP 和 Apache 版本。

    调整这些以适合您的安装。

    【讨论】:

      【解决方案3】:

      PHP 包含 pgsql 所需的 dll 和 pgsql_pdo 驱动程序 libpq.dll... 将 PHP 二进制路径添加到系统路径或将 de DLL 复制到 Windows\system32。 linux依赖会自动安装。

      【讨论】:

        猜你喜欢
        • 2012-07-10
        • 2013-03-09
        • 2012-12-09
        • 2016-05-16
        • 2019-07-01
        • 1970-01-01
        • 2019-09-07
        相关资源
        最近更新 更多