php - Laravel:错误 [PDOException]:在 PostgreSQL 中找不到驱动程序

标签 php database postgresql laravel syntax-error

我正在尝试通过 Laravel 连接 PostgreSQL 数据库以进行 php artisan 迁移,但似乎没有被定向,因为它正在读取 MySQL 的数据库名称。

以下是来自 database.php 的命令:

'connections' => array(

    'sqlite' => array(
        'driver'   => 'sqlite',
        'database' => __DIR__.'/../database/production.sqlite',
        'prefix'   => '',
    ),

    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'database',
        'username'  => 'root',
        'password'  => '',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

    'pgsql' => array(
        'driver'   => 'pgsql',
        'host'     => 'localhost',
        'database' => 'postgres',
        'username' => 'postgres',
        'password' => 'root',
        'charset'  => 'utf8',
        'prefix'   => '',
        'schema'   => 'public',
    ),

    'sqlsrv' => array(
        'driver'   => 'sqlsrv',
        'host'     => 'localhost',
        'database' => 'database',
        'username' => 'root',
        'password' => '',
        'prefix'   => '',
    ),

),

如果我删除 MySQL 路径,我会得到:

[InvalidArgumentException]
Database [mysql] not configured.


编辑: 尝试执行 php artisan migrate 时,我收到“PDOException:找不到驱动程序”。我正在使用 WAMP,我在 Win8.1 中。使用 PostgreSQL 作为数据库。


编辑: 已经尝试了一系列替代解决方案,但我仍然应该解决这个问题。 php.ini 文件在 Apache、WAMP(来自 php 文件夹)和 PostgreSQL 中进行了检查。 extension_dir 是正确的 -> extension_dir = "c:/wamp/bin/php/php5.5.12/ext/"

extension=pdo_pgsql.dllextension=pgsql.dll 未注释。

在“系统变量”中完成 PATH 技巧并重新启动。没有机会。

感谢到目前为止的帮助。

这些是我的驱动程序 php_pdo_driver.h & php_pdo.h 来自 C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\php\SDK\include\ext\pdo

来自 phpinfo 的信息:

PHP Version 5.5.12

Compiler MSVC11 (Visual C++ 2012) Configure Command cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=C:\php-sdk\oracle\x64\instantclient10\sdk,shared" "--with-oci8=C:\php-sdk\oracle\x64\instantclient10\sdk,shared" "--with-oci8-11g=C:\php-sdk\oracle\x64\instantclient11\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--disable-static-analyze" "--with-pgo"

最佳答案

一定要在app/config/database.php

中配置'default'

对于 postgres,这将是 'default' => 'postgres',

如果您收到 [PDOException] 找不到驱动程序 错误,请检查您是否安装了正确的 PHP 扩展。您需要安装并启用 pdo_pgsql.sopgsql.so。有关如何执行此操作的说明因操作系统而异。

对于 Windows,pgsql 扩展应该与官方 PHP 发行版一起预下载。只需编辑您的 php.ini 并取消注释行 extension=pdo_pgsql.soextension=pgsql.so

另外,在 php.ini 中,确保 extension_dir 设置为正确的目录。它应该是 PHP 安装目录中名为 extensionsext 或类似名称的文件夹。

最后,将 C:\wamp\bin\php\php5.*\ 中的 libpq.dll 复制到 C:\wamp\bin\apache*\bin并通过WampServer接口(interface)重启所有服务。

如果仍然出现异常,则可能需要将 postgres \bin 目录添加到您的 PATH:

  1. 系统属性 -> 高级选项卡 -> 环境变量
  2. 在窗口下半部分的“系统变量”组中,滚动并找到 PATH 条目。
  3. 选择它并点击编辑
  4. 在现有条目的末尾,输入您的 postgres bin 目录的完整路径。 bin 文件夹应位于 postgres 安装目录的根目录中。
  5. 重新启动所有打开的命令提示符,或者可以确定的是,重新启动您的计算机。

这有望解决任何问题。欲了解更多信息,请参阅:

关于php - Laravel:错误 [PDOException]:在 PostgreSQL 中找不到驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25329302/

相关文章:

php - 如何使用 laravel5.5 在我的 MySQL 中创建数据表?

php - 根据登录用户的 ID 显示数据库表中的数据

php - Laravel:动态查询按 api 排序

mysql - 是否有可能更改具有数值的字符串的顺序

php - Laravel 选择左连接新数组索引中的所有列

mysql - 导入到 mySQL 导致空格转换为 'Â'

php - Mysql 查询在 Codeigniter 中返回空结果,但在 native PHP 中工作正常

database - 如果表上有索引,如何处理表更新/插入

node.js - 如何在 knex.js 中使用 postgres::date

python - 如何智能合并Django数据库?