You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel5.8安装运行报could not find driver错误问题咨询

Laravel 报could not find driver错误排查解决

问题基础信息

相关运行环境版本:

  • Laravel版本:5.8.38
  • PHP版本:7.4.3
  • MySQL版本:8.0.21

问题现象:已完成MySQL数据库配置,且可成功执行php artisan migrate完成数据迁移,但执行数据库查询操作时触发驱动找不到异常,核心报错内容如下:

{
    "message": "could not find driver (SQL: select * from `my_admin` where `mobile` = 18912345678 order by `id` asc limit 1)",
    "exception": "Illuminate\Database\QueryException",
    "file": "/home/ubuntu/ygd/api/vendor/laravel/framework/src/Illuminate/Database/Connection.php",
    "line": 664,
    "trace": [
        {
            "file": "/home/ubuntu/ygd/api/vendor/laravel/framework/src/Illuminate/Database/Connection.php",
            "line": 624,
            "function": "runQueryCallback",
            "class": "Illuminate\Database\Connection",
            "type": "->"
        },
        {
            "file": "/home/ubuntu/ygd/api/vendor/laravel/framework/src/Illuminate/Database/Connection.php",
            "line": 333,
            "function": "run",
            "class": "Illuminate\Database\Connection",
            "type": "->"
        },
        {
            "file": "/home/ubuntu/ygd/api/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php",
            "line": 2130,
            "function": "select",
            "class": "Illuminate\Database\Connection",
            "type": "->"
        }
        ...
    ]
}

核心原因判断

能正常执行数据迁移,说明PHP命令行(CLI)环境已经正确加载PDO MySQL驱动,查询时报错基本是因为触发查询的PHP运行环境和执行迁移的CLI环境不是同一个,没有加载对应的数据库驱动,属于多SAPI配置不一致、多版本PHP冲突类问题。

分步排查方案

1. 确认触发报错的运行环境是否加载pdo_mysql扩展

根据报错触发场景分别检查:

  • Web接口访问触发报错:在项目public目录下新建临时文件phpinfo.php,写入<?php phpinfo();,访问对应地址后搜索pdo_mysql,确认扩展是否启用,同时记录当前加载的php.ini文件路径,方便后续修改配置。
  • 命令行/队列任务触发报错:终端执行php -m,查看返回的扩展列表中是否存在pdo_mysql项。

如果确认扩展未加载,Ubuntu/Debian系统直接执行对应安装命令即可:

sudo apt-get install php7.4-mysql php7.4-pdo
# 安装完成后重启服务
sudo systemctl restart php7.4-fpm
# 用Nginx就重启nginx,用Apache就重启apache2
sudo systemctl restart nginx

2. 检查数据库配置是否正确

打开项目根目录.env文件核对配置:

  • 确认DB_CONNECTION值为mysql,不要误填为sqlite、pgsql等其他数据库类型
  • 确认DB_HOST、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD和执行迁移时使用的配置完全一致
  • 修改配置后执行php artisan config:clear清除配置缓存,避免旧缓存导致配置不生效

3. 排查多PHP版本冲突

服务器安装多个PHP版本时,极易出现CLI用PHP7.4、Web服务跑其他PHP版本的情况:

  • 执行ls /etc/php查看服务器上已安装的所有PHP版本
  • 核对Nginx/Apache配置中指向的PHP-FPM端口或sock文件对应的PHP版本为7.4,和安装pdo_mysql扩展的版本保持一致
  • 命令行执行artisan命令时尽量用全路径指定版本,比如/usr/bin/php7.4 artisan xxx,避免调用到其他版本的PHP二进制文件

4. 特殊场景处理

以上步骤都验证无效时,检查以下项:

  • 打开config/database.php,确认mysql连接配置下的driver项值为pdo_mysql,没有被误修改
  • 检查代码中是否有动态切换数据库连接的逻辑,切换后的目标连接对应驱动是否已安装
  • 如果是队列任务触发的报错,修改配置/扩展后必须执行php artisan queue:restart重启队列worker进程,队列进程会持久加载旧环境配置,不重启不会生效
  • 检查php.ini配置中是否存在disable_functions禁用了相关扩展加载的函数,或者extension_dir扩展目录配置错误导致扩展无法加载

内容的提问来源于stack exchange,提问作者muyang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 08:51:29