Artisan 迁移找不到驱动程序

Posted

技术标签:

【中文标题】Artisan 迁移找不到驱动程序【英文标题】:Artisan migrate could not find driver 【发布时间】:2018-03-26 12:02:49 【问题描述】:

我正在尝试安装 Laravel。我已经安装了Xampp,但是当我尝试使用php artisan migrate设置我的数据库时,我得到了错误:

[Illuminate\Database\QueryException] 找不到驱动程序(SQL: select * from information_schema.tables where table_schema = homestead 和 table_name = migrations) [PDOException] 找不到 司机

config/database.php文件有相关连接:

'connections' => [

    'sqlite' => [
        'driver' => 'sqlite',
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
    ],

    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

    'pgsql' => [
        'driver' => 'pgsql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '5432'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'prefix' => '',
        'schema' => 'public',
        'sslmode' => 'prefer',
    ],

    'sqlsrv' => [
        'driver' => 'sqlsrv',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '1433'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'prefix' => '',
    ],

],

有什么想法吗?

【问题讨论】:

在您的database.php 上是否设置了default connection name'default' => env('DB_CONNECTION', 'mysql'),? 您是否在.env 中创建了数据库集? Laravel: PDOException: could not find driver的可能重复 【参考方案1】:

如果您安装了多个 php 版本,应用了所有其他选项,例如 php.ini 中的 UN 注释驱动程序,但它不起作用,您可能会错过以下步骤

    请在 cmd 中查看php -v

    通过右键单击 PC 和属性转到您的环境变量

    检查您的 php 密钥的路径,它可能指向旧版本。

【讨论】:

【参考方案2】:

我很尴尬。我知道这对那些使用 XAMPP 的人没有帮助,但我不得不分享。我使用在 Windows 10 中运行的 ScotchBox 虚拟机在 Vagrant 中安装了开箱即用的 Laravel。我正在关注 Digital Ocean 教程。这应该可以工作。

和你一样,我跑了php artisan migrate,我得到了

could not find driver (SQL: select * from sqlite_master where type = 'table' and name = migrations)

几个小时后,我想

也许我应该在 Vagrant shell 内部试试?

我打开vagrant ssh 并再次运行php artisan migrate。我收到了一条不同的消息:

Could not open input file: artisan

几个小时后,我猜对了。

vagrant ssh

cd \var\www\

php artisan migrate

Migration table created successfully

所以,是的。我在错误的 shell 错误的文件夹中。

【讨论】:

【参考方案3】:

您还需要安装 PHP-MySQL 驱动程序:

sudo apt install php-mysql

【讨论】:

【参考方案4】:

在您的 php.ini 配置文件中,只需取消注释扩展:

;extension=pdo_mysql

(您可以在安装服务器的 php 文件夹中找到您的 php.ini 文件。)

做这个

extension=pdo_mysql

现在您需要在 find DB_DATABASE= 中配置您的 .env 文件,写入您使用的数据库名称,而不是像我使用我的数据库并且数据库名称为“abc”时那样迁移,而不是我需要在那里写入 DB_DATABASE=abc 和保存那个 .env 文件并再次运行命令

php artisan migrate

所以运行后你会得到一些类似如下的消息:

php artisan migrate
Migration table created successfully.

【讨论】:

【参考方案5】:

对于任何尝试在 Docker 映像中启用扩展的人:

RUN docker-php-ext-install pdo pdo_mysql \
    && docker-php-ext-enable pdo_mysql

基于this answer

还向@Krishna 提供帮助,以阐明扩展问题。

【讨论】:

【参考方案6】:

在 ubuntu 或 windows 中

删除 ;从 ;extension=pdo_mysql 或 extension=php_pdo_mysql.dll 并添加 extension=pdo_mysql.so

重启 xampp 或 wampp

安装 sudo apt-get install php-mysql

php 工匠迁移

【讨论】:

【参考方案7】:

确保你已经安装了php-mysql,pdo需要php-mysql才能正常运行。如果没有,您可以简单地输入

sudo apt install php-mysql

【讨论】:

【参考方案8】:

如果你在你的linux机器上安装了phpmysql,php需要php-mysql扩展才能与mysql通信。因此,请确保您还使用以下方式安装了此扩展:

sudo yum install php-mysql 在基于 redhat 的机器中。

sudo apt-get install php-mysql 在 debian 机器中。

【讨论】:

这个答案在 ubuntu 18.04 中对我有用,谢谢@Ali_Hr 这个答案在 Ubuntu 20.04 LTS 上对我有用,我使用 Xampp 作为我的 localhost 环境感谢您节省了我的一天@Ali_Hr【参考方案9】:

如果您使用的是 linux 系统 请尝试运行sudo php artisan migrate 至于我,有时数据库操作需要在 laravel 中使用 sudo 运行。

【讨论】:

【参考方案10】:

在 Windows 和 PHP 7.4.5 中,转到 php.ini 并取消注释此行

extension=pdo_mysql

【讨论】:

【参考方案11】:

我们已经按照以下步骤解决了同样的错误。

linux命令出现这种类型的错误,首先,检查你的php.ini文件

If your php.ini file exists then in configuration file simply uncomment the extension:

;extension=php_pdo_mysql.dll 

Else follow below steps

step1:php -v

step2: Install php mysql extension

php 7.0 sudo apt-get install php7.0-mysql

php 7.1 sudo apt-get install php7.1-mysql

php 7.2 sudo apt-get install php7.2-mysql

php 7.3 sudo apt-get install php7.3-mysql

step3: service apache2 restart

step4: php artisan migrate

【讨论】:

【参考方案12】:

如果你正在匹配 sqlite 数据库: 在您的 php 文件夹中打开 php.ini 文件,转到:

;extension=pdo_sqlite

只要去掉分号就可以了。

【讨论】:

【参考方案13】: 转到 .env 文件并更改以下内容
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=shreemad
DB_USERNAME=root
DB_PASSWORD=

将 DB_PASSWORD 字段更改为

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=shreemad
DB_USERNAME=root
DB_PASSWORD=" "

在我的情况下它有效

注意:如果你在 mysql 中的密码为空

【讨论】:

【参考方案14】:

我是 Windows 和 XAMPP 用户。对我有用的是在 XAMPP 的 php.iniC:\php\php.iniphp.ini 中添加 extension=php_pdo_mysql.dll

在你的 cmd 中运行这个命令来知道你的配置文件在哪里

php -i | find /i "Configuration File

【讨论】:

【参考方案15】:

虽然有时您可能有多个 php 版本,但您也可能有一个保留版本的 php-mysql.. 执行 sudo dpkg -l | grep mysql | grep php 并比较你从 php -v 得到的结果

【讨论】:

【参考方案16】:

我知道这有点晚了,但我正在为仍在 Windows 上遇到此问题的任何人回答这个问题(使用 XAMPP)。

步骤 1. 验证您的 PHP 版本是否不匹配。 为此,请打开 routes/web.php 并创建一个简单的路由来返回 php 信息,如下所示:

Route::get('/', function() 
   return response()->json([
    'stuff' => phpinfo()
   ]);
)

and compare this with output from your command line

As we can see, in my case there is a mismatch, this usually happens if you have multiple versions of php installed.

步骤 2. 将 xampp 使用的 php 版本添加到系统路径

第 3 步。确认您在 php.ini 文件中启用了扩展。 注意。确保您正在编辑显示在 phpinfo() 命令结果中“加载的配置文件”条目下的 php.ini 文件。

【讨论】:

【参考方案17】:

在您的 php.ini 配置文件中,只需取消注释扩展名:

;extension=php_pdo_mysql.dll

(您可以在安装堆栈服务器的 php 文件夹中找到您的 php.ini 文件。)

如果您使用的是 Windows,请输入:extension=php_pdo_mysql.dll

如果您使用的是 Linux,请输入:extension=pdo_mysql.so

然后快速重启服务器。

如果这对您不起作用,您可能需要将 pdo_mysql 扩展安装到您的 php 库中。

【讨论】:

它也可能是整个 php-mysql 扩展丢失。所以也许也像:sudo apt install php7.3-mysql(更改 7.3 whit your php ver) @Krishna Kant Chourasiya,您好,我在迁移时也遇到错误,请帮助我,我已经尝试了此页面中给出的所有解决方案,但没有任何效果。这是链接***.com/questions/60716326/…

以上是关于Artisan 迁移找不到驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:PHP Artisan Migrate 抛出 PDO 异常:找不到驱动程序(Postgres)

php artisan migrate throwing [PDO Exception] 找不到驱动程序 - 使用 Laravel

php artisan migrate:[PDOException] 找不到驱动程序

在 Laravel 5 中找不到类“App\Http\Controllers\Artisan”

php artisan migrate-laravel 的问题

PostgreSQL 迁移失败并出现错误消息“找不到驱动程序”