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

新手上路,请多包涵

我正在尝试通过 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 作为数据库。


编辑: 已经尝试了一系列替代解决方案,但我仍然应该解决这个问题。在 Apache、WAMP(来自 php 文件夹)和 PostgreSQL 中检查了 php.ini 文件。 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 版本 5.5.12

编译器 MSVC11 (Visual C++ 2012) 配置命令 cscript /nologo configure.js “–enable-snapshot-build” “–disable-isapi” “–enable-debug-pack” “–without-mssql” “–没有-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”

原文由 Hyperion 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 564
2 个回答

一定要配置 'default' 键入 app/config/database.php

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

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

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

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

最后将 libpq.dllC:\wamp\bin\php\php5.*\ 复制到 C:\wamp\bin\apache*\bin 并通过WampServer接口重启所有服务。

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

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

这应该有望解决任何问题。有关更多信息,请参阅:

原文由 lainceline 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您使用的是 Docker,您可以在 php/Dockerfile 中添加以下代码。它将安装 pdo pgsql pdo_pgsql 这是将 PHP 连接到 PostgreSQL 所必需的。

 FROM php:8.0.3-fpm
RUN apt-get update

# Install useful tools
RUN apt-get -y install apt-utils nano wget dialog vim

# Install important libraries
RUN echo "\e[1;33mInstall important libraries\e[0m"
    RUN apt-get -y install --fix-missing \
    apt-utils \
    build-essential \
    git \
    curl \
    libcurl4 \
    libcurl4-openssl-dev \
    zlib1g-dev \
    libzip-dev \
    zip \
    libbz2-dev \
    locales \
    libmcrypt-dev \
    libicu-dev \
    libonig-dev \
    libxml2-dev

RUN echo "\e[1;33mInstall important docker dependencies\e[0m"
RUN docker-php-ext-install \
    exif \
    pcntl \
    bcmath \
    ctype \
    curl \
    iconv \
    xml \
    soap \
    pcntl \
    mbstring \
    tokenizer \
    bz2 \
    zip \
    intl

# Install Postgre PDO
RUN apt-get install -y libpq-dev \
    && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
    && docker-php-ext-install pdo pdo_pgsql pgsql

原文由 Hanie Asemi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题