php artisan migrate throw [PDO Exception]无法找到驱动程序 - 使用Laravel

时间:2014-03-17 19:30:09

标签: php mysql pdo laravel driver

我在安装laravel时遇到了不好的经历。但是,我能够这样做,并进入下一个级别。我使用了生成器并创建了我的迁移。 但是当我输入最后一个命令时

php artisan migrate

它抛出一个PDOException - 找不到驱动程序。

       'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
            'database'  => 'database',
            'username'  => 'root',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

这是我在config / database.php中的配置。

我尝试在stackoverflow和laravel论坛上搜索,人们认为这是PDO问题,而不是工匠或php的 - 我遵循了这些建议,如添加

extension=pgsql.so
extension=pdo_pgsql.so

在php.ini中

没有积极的结果。它总是说[PDOException]could not find driver.

有人可以帮忙解决这个问题。

我正在使用的环境:Mac,laravel 4,MAMP PRO和php 5.4.4

27 个答案:

答案 0 :(得分:49)

您可以使用

sudo apt-get install php7-mysql

sudo apt-get install php5-mysql

sudo apt-get install php-mysql

这对我有用。

答案 1 :(得分:19)

这对我有用:

sudo apt-get install php5-sqlite

这是为php5安装的sqlite,然后我再次运行了php artisan migrate命令并且工作得很好。

答案 2 :(得分:17)

您需要专门启用pdo_mysql插件。假设您正在使用标准的PHP安装,那么通常您只需将其添加到PHP.ini文件中:

extension=pdo_mysql.so

您需要确保此文件存在于扩展目录中。

添加pdo_pgsql.so没有帮助,因为这适用于PostgreSQL。

此外,在对PHP ini文件进行更改后,应确保重新启动Web服务器,否则更改可能不会反映出来。

答案 3 :(得分:7)

在这里遇到同样的问题,事实证明这是因为命令行中的PHP使用了浏览器版本中不同的php.ini文件,这就是为什么当你看到它时正好加载扩展名的原因{/ 1}}在浏览器中。

根据this answer,您只需要运行:

phpinfo()

在命令行中,它将告诉您当前加载的php --ini (可能实际上是php.ini文件的路径,该文件与常规php-cli.ini文件位于同一位置。 / p>

一旦找到了,请使用您想要的pdo扩展(在本例中为MySQL)修改它:

php.ini

或者,对于Windows上使用某种WAMP服务器的任何其他用户,它可能看起来像这样:

extension=pdo_mysql.so

答案 4 :(得分:6)

我认为你错过了php5的mysql驱动程序。 执行以下命令:

sudo apt-get install php5-mysql
/etc/init.d/php5-fpm restart

答案 5 :(得分:4)

请检查您的Laravel .env文件。确保DB_CONNECTION=mysql,否则它将不适用于MySQL。它试图加载其他东西。

答案 6 :(得分:2)

有同样的问题而且只是想通了,网站在MAMP的php下运行,但是当你打电话给命令时,它会运行mac(如果没有修改bash路径)。当mac没有这些扩展时,你会遇到问题。

运行php -i查找已加载的扩展,然后安装那些错过的扩展。或运行' /Applications/MAMP/bin/php/php5.3.6/bin/php artisan {your command}'使用MAMP'

答案 7 :(得分:2)

我也得到了同样的错误 - > " [PDOException]
  找不到司机"

之后我使用了很多命令,但没有得到任何帮助

最后我使用了以下命令,解决了我的问题。

sudo apt-get install php5-sqlite

答案 8 :(得分:2)

您缺少PDO驱动程序。

首先安装驱动程序

对于ubuntu:对于mysql数据库。

  

sudo apt-get install php5.6-mysql / php7.2-mysql

您还可以搜索其他数据库系统。

您也可以搜索驱动程序:

  

sudo apt-cache search drivername

Then Run the cmd php artisan migrate

答案 9 :(得分:2)

使用 sqlite 进行 Laravel测试需要php pdo sqlite驱动程序

对于Ubuntu 14.04

sudo apt-get install php5-sqlite
sudo service apache2 restart

在ubuntu 16.04中没有php5-sqlite

sudo apt-get install php7.0-sqlite
sudo service apache2 restart

答案 10 :(得分:1)

我在debian上遇到了这个问题。问题是,我使用dotdeb存储库来获取更新的PHP包。出于某种原因,它将php cli更新为7.0,而web php二进制文件仍然是php 5.6。我使用this answer将php命令行二进制文件链接到5.6版本,如下所示:

$ sudo ln -sfn /usr/bin/php5 /etc/alternatives/php

答案 11 :(得分:1)

我在PostgreSQL中遇到此错误,解决方法是:

sudo apt-get install php7.1-pgsql

您只需要使用已安装的PHP版本,我的是7.1。 这已经解决了PostgreSQL的问题。

答案 12 :(得分:1)

这对我有用:(对于pgsql:使用'pgsql'而不是'mysql')

步骤1)

sudo apt-get install php-mysql

步骤2)

php artisan config:clear

步骤3)

php artisan config:cache

步骤4)
然后重新启动服务器,再次生成密钥并迁移它,完成

答案 13 :(得分:1)

您必须安装最新版本的php mysql 在我的情况下,我安装php7.1-mysql

试试这个

sudo apt-get install php7.1-mysql

我正在使用最新版本的laravel

答案 14 :(得分:1)

我没有用ubuntu 14.04

下面的命令为我解决了这个问题。

  

sudo apt-get install php-mysql

在我的情况下,将我的php版本从5.5.9更新为7.0.8后,我收到此错误,包括其他两个错误。

错误:

  1. laravel / framework v5.2.14需要ext-mbstring * - >系统中缺少所请求的PHP扩展名mbstring。

  2. phpunit / phpunit 4.8.22需要ext-dom * - >系统中缺少所请求的PHP扩展名dom。

  3. [PDOException]
    找不到司机

  4. 解决方案:

    我安装了这个软件包,我的问题就消失了。

      

    sudo apt-get install php-mbstring

         

    sudo apt-get install php-xml

         

    sudo apt-get install php-mysql

答案 15 :(得分:0)

如果您使用的是Laravel 5.x,并且错误来自于尝试修改列的属性,则错误可能来自缺少的先决条件。

试试这个:

 composer require doctrine/dbal

然后尝试运行迁移。

从这里: https://laravel.com/docs/master/migrations#modifying-columns

答案 16 :(得分:0)

我也得到了同样的错误 - > “[PDOException] 找不到司机“

我意识到php指向/ usr / bin / php而不是lampp / opt / lampp / bin / php所以我只是创建了 和别名

alias php =“/ opt / lampp / bin / php”

还必须更新.env文件以确保更新数据库访问凭据。

猜猜看,它有效!

答案 17 :(得分:0)

我找到了解决此错误的正确方法!您没有安装任何数据库或此文件中的默认数据库 的配置/ database.php中 设置为像这样的其他数据库

'default' => 'sqlite',
'default' => env('DB_CONNECTION', 'sqlite'), //laravel 5.2

将默认值更改为您安装的默认值或安装默认的数据库!我已经安装了mysql和php artisan migrate工作后我改变了这一行:

'default' => 'mysql',
'default' => env('DB_CONNECTION', 'mysql'), //laravel5.2

答案 18 :(得分:0)

在我的情况下,我不知道Apache运行的PHP与CLI运行的PHP不同。如果在httpd.conf中进行配置期间您指定了一个PHP模块,而不是CLI使用的默认模块,则可能就是这种情况。

答案 19 :(得分:0)

通过此命令安装

sudo apt-get install php5-gd

这对我有用。

答案 20 :(得分:0)

对于未来的搜索者。 在FreeBSD上试试下一个

pkg_info | grep php5-pdo_mysql

如果您看到空行返回,请执行以下操作:

cd /usr/ports/databases/php5-pdo_mysql

并执行安装

make install clean

然后只需重启你的apache即可完成

e.g。 sudo /usr/local/etc/rc.d/apache22 restart

答案 21 :(得分:0)

仅替换为:; php.ini文件中的extension = pdo_mysql到extension = pdo_mysql。

答案 22 :(得分:0)

如果您正在使用基于manjaro的基于拱的系统

只需使用

sudo pacman -S php-sqlite

重新启动您的httpd

systemctl restart httpd

答案 23 :(得分:0)

对于发现该帖子的 windows 10和WAMP 的那些用户,我有解决方案。Please go visit this link。它对我有用,很难找到解决方案,但我希望将来对其他人有帮助。

答案 24 :(得分:0)

首先像这样检查您的php版本:

php -v

例如,获得版本号后,我得到 7.1 ,然后像这样安装

sudo apt-get install  php7.1-sqlite     //for laravel testing with sqlite
sudo apt-get install  php-mysql         //for default mysql
sudo apt-get install  php7.1-mysql      //for version based mysql 
sudo apt-get install  php7.1-common     //for other necessary package for php

,并且需要重新启动apache2

sudo service apache2 restart

答案 25 :(得分:0)

假设您使用虚拟盒,无业游民等进行了常规安装。 这可能发生在新人们身上。 PHP可以安装在PC上,但是laravel项目的所有PHP模块都在VM上 因此,要访问您的VM,请转到homestead文件夹并键入: 流浪的ssh

然后转到项目路径并执行php artisan迁移。

答案 26 :(得分:0)

这是 MAC 和 MAMP 的问题。 尝试在您的 .env 文件中添加:

DB_SOCKET= /Applications/MAMP/tmp/mysql/mysql.sock

它对我有用