提问人:Hyperion 提问时间:8/15/2014 最后编辑:vbenceHyperion 更新时间:3/17/2023 访问量:368678
Laravel:错误 [PDOException]:在 PostgreSQL 中找不到驱动程序
Laravel: Error [PDOException]: Could not Find Driver in PostgreSQL
问:
我正在尝试通过Laravel与PostgreSQL数据库连接,以便进行php工匠迁移,但似乎没有被指示,因为它正在读取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.dll
extension=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 配置.js “--启用快照构建” “--禁用-isapi” “--启用调试包” “--没有 mssql” “--没有 pdo-mssql” “--不带 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”
答:
请务必在'default'
app/config/database.php
对于 postgres,这将是'default' => 'postgres',
如果收到错误,请检查是否安装了正确的 PHP 扩展。您需要并安装并启用。有关如何执行此操作的说明因操作系统而异。[PDOException] could not find driver
pdo_pgsql.so
pgsql.so
对于 Windows,扩展应该与官方 PHP 发行版一起预下载。只需编辑您的并取消注释这些行,然后pgsql
php.ini
extension=pdo_pgsql.so
extension=pgsql.so
此外,在 中,请确保设置为正确的目录。它应该是 PHP 安装目录中一个名为 or 或类似的文件夹。php.ini
extension_dir
extensions
ext
最后,通过 WampServer 接口复制并重新启动所有服务。libpq.dll
C:\wamp\bin\php\php5.*\
C:\wamp\bin\apache*\bin
如果仍然出现异常,则可能需要将 postgres 目录添加到:\bin
PATH
- 系统属性 -> 高级选项卡 -> 环境变量
- 在窗口下半部分的“系统变量”组中,滚动并找到该条目。
PATH
- 选择它,然后单击编辑
- 在现有条目的末尾,将完整路径放入 postgres bin 目录。bin 文件夹应位于 postgres 安装目录的根目录中。
- 重新启动任何打开的命令提示符,或者确定重新启动计算机。
这应该有望解决任何问题。有关详细信息,请参阅:
- http://php.net/manual/en/install.pecl.windows.php
- http://webcheatsheet.com/php/install_and_configure.php#extsetup
评论
extension=php_pdo.dll
extension=php_pdo.dll
ext
php.ini
phpinfo();
对于 ,如果它是基于操作系统的,PDOException: could not find driver
MySQL
Debian
sudo apt-get -y install php5-mysql
评论
sudo apt-get -y install php7.0-pgsql
对于那些想要在 OpenSuse(和 co)上使用 Postgresql 的人,请尝试以下操作:
zypper --no-refresh in php5-pgsql
我有同样的问题。这就是对我有用的东西。
有 2 个 php.ini 文件:
- C:\wamp\bin\apache\apache2.4.9\bin
- C:\wamp\bin\php\php5.5.12
注意:这是使用我的PHP和Apache版本,更改为您的版本。
位于两个文件夹中的 php.ini 文件是您需要更新的扩展名:
- 分机=php_pdo_pgsql.dll
- 分机=php_pgsql.dll
这些是您需要取消注释的内容(删除 ; 符号)。
重新启动 Wamp 和命令提示符。
希望它能:)对你有用。
评论
我意识到这是一个老问题,但我在谷歌搜索中找到了它,所以我将继续回答,以防万一其他人遇到这个问题。我在 Mac 上遇到了同样的问题,但使用 HomeBrew 解决了它。安装完成后,只需运行以下命令即可:
brew install php56-pdo-pgsql
并将 56 替换为您正在使用的任何版本的 PHP,不带小数点。
我知道旧线程,但我因此失去了几个小时的生命。您还需要在 .env 文件中设置数据库信息。您不必在此处指定驱动程序,因为使用了 database.php 中指定的默认值(我认为)。我很挣扎,因为它在 .env 文件中,而且我正在使用 pgsql。DB_CONNECTION=mysql
对于 Ubuntu 中的 PHP 7,您还可以执行以下操作:
sudo apt-get install php7.0-pgsql
因此,现在您不能取消注释php.ini
更新:我有同样的错误,所以问题不在驱动程序中。
我更改了我的,但每次我看到错误。
我更改了数据库配置,错误消失了。database.ini
.env
评论
sudo apt-get install php7.1-pgsql
sudo apt-get install php7.4-pgsql
这对我有用:
$ sudo apt-get -y install php5.6-pgsql
$ sudo service apache2 restart
我正在使用 32 位 Ubuntu 14
这对我有用:
$ sudo apt-get install php-gd php-mysql
sudo apt-get install php7.1-pgsql
我看到您使用的是 Windows。我无法通过启用 Windows WAMP Server 附带的任何扩展来解决此问题。我尝试了PDO_ODBC和其他人,甚至找到了Microsoft官方PDO_SQLSRV。
我的解决方案是从第 3 方网站安装 PDO_SQLSRV 驱动程序。我通过 http://robsphp.blogspot.nl/2012/06/unofficial-microsoft-sql-server-driver.html 找到了司机
我通常不使用来自随机网站的 DLL,但我很绝望,这对我有用。希望它能为其他人节省许多小时的挫败感。
将 Laravel V 5.5.39 与 Php 7.1.12 一起使用可以正常工作,但更高(更新的)php 版本会导致问题。因此,更改 Php 版本,您将获得 100% 的解决方案。
3小时后解决...
我正在使用 WAMP (PHP 7.2.4)、PostgreSQL 10、Laravel 5.6.29。
从 Wampserver 3.3 加载了 PHP 扩展(pgsql、pdo_pgsql),然后我能够使用 www 目录中的简单 php 测试代码连接到 PostgreSQL 服务器。但仍然回来了$ php artisan migrate
PDOException::(“找不到驱动程序”)
我检查了 shell(适用于 Windows 的 git bash),它返回了 C:\wamp64\bin\php\php7.2.4\php.ini 而不是由 WAMP 加载的 c:\wamp64\bin\apache\apache2.4.33\bin\php.ini
所以你必须在C:\wamp64\bin\php\php7.2.4\php.ini中取消注释pgsql和pdo_pgsql扩展,然后迁移才能工作......$ php --ini
在装有 Laragon 3.4.0 180809的 Windows 8 PC 中,我遇到了同样的问题。它发生在我的情况下,因为我更新了 Laragon 并添加了新版本的 PHP。所以实际上我有两个目录:laragon/bin/php/
php-7.1.20-Win32-VC14-x64
php-7.1.7-Win32-VC14-x64
我添加到我的变量中。但是在我的命令控制台中,运行显示该路径实际上是从旧路径获取的:.所以我删除了旧的(为了安全起见,我把它放在回收站里)。但拉拉贡在那之后未能首发。7.1.20
PATH
php --ini
php-7.1.7-Win32-VC14-x64
因此,在 中,我将路径更改为最新的 PHP 版本。然后重新启动 Laragon,问题就解决了。😊laragaon/etc/apache2/mod_php.conf
参考:如何添加另一个PHP版本 - Laragon Forum
我也遇到了这个问题。我已经解决了这个问题。如果您使用的是 Wamp,请执行以下步骤。
- 转到(您正在使用的 php 版本在哪里)
wamp64/www/bin/php/php*
*
- 编辑文件 php 并通过删除分号来取消注释此行:
;extension=pdo_pgsql to extension=pdo_pgsql
- 保存并重新启动 Wamp 服务器
如果它不起作用,请再次检查您的和配置/数据库。.env
只需运行此命令
sudo apt-get -y install php*-mysql
我在 PHP 7.3.7 docker 上使用 laravel 遇到了同样的错误:
这对我有用
apt-get update && apt-get install -y libpq-dev && docker-php-ext-install pdo pgsql pdo_pgsql
这将安装 pgsql 和 pdo_pgsql 驱动程序。
现在运行此命令以取消对 php 中 extension=pdo_pgsql.so 和 extension=pgsql.so 行的注释.ini
sed -ri -e 's!;extension=pdo_pgsql!extension=pdo_pgsql!' $PHP_INI_DIR/php.ini
sed -ri -e 's!;extension=pgsql!extension=pgsql!' $PHP_INI_DIR/php.ini
在Linux(Ubuntu)中,只需像这样安装驱动程序:
sudo apt-get install php-pgsql
这将使用您的 php 当前版本安装驱动程序。
默认情况下,驱动程序已停用,您应该自己激活。在那之后,它会很好地工作。
我希望这样做。
对于像 20.04+ 这样的 Ubuntu,只需安装:
sudo apt install php-pgsql
记得安装之前。它会在安装时将驱动程序置于正确的路径中。apache2
php
如果您在 Windows 中使用 Wamp,则必须直接从 PHP 文件夹编辑文件,该文件夹通常并且需要通过删除这些扩展名的前面来取消注释扩展名:php.ini
C:\wamp64\bin\php\php8.0.13
;
extension=pdo_pgsql
extension=pgsql
- 在环境变量中检查您的 PHP 路径。
- 重新启动 wamp 并重新启动 cmd 或 vs code(如果使用 vs code CMD)
如果您使用的是 Docker,则可以在 .它将安装将 PHP 连接到 PostgreSQL 所必需的。php/Dockerfile
pdo
pgsql
pdo_pgsql
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
评论