Laravel8使用jenssegers/laravel-mongodb出现MySqlConnection类型错误
问题根因
你仅在.env中添加了MongoDB的连接参数,但没有在Laravel的数据库配置文件中注册mongodb驱动对应的连接配置,导致框架无法识别mongodb连接类型,自动 fallback 到默认的MySQL连接,从而触发类型不匹配报错。
修复步骤
1. 新增MongoDB连接配置
打开config/database.php文件,找到connections数组,新增如下配置项(原有MySQL等其他连接配置无需删除):
'connections' => [ // 原有mysql、pgsql等连接配置保留 'mongodb' => [ 'driver' => 'mongodb', 'host' => env('MONGO_DB_HOST', '127.0.0.1'), 'port' => env('MONGO_DB_PORT', 27017), 'database' => env('MONGO_DB_DATABASE'), 'username' => env('MONGO_DB_USERNAME'), 'password' => env('MONGO_DB_PASSWORD'), 'options' => [] // 若你的MongoDB开启了鉴权,可在options中添加 'authSource' => 'admin' 配置 ], ],
2. 配置连接生效规则
两种方案二选一即可:
- 方案1:全局默认使用MongoDB连接,在
.env中将DB_CONNECTION的值修改为mongodb - 方案2:仅MongoDB对应的模型使用单独连接,在你的模型类中新增
$connection属性指定连接:
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Jenssegers\Mongodb\Eloquent\Model; use Jenssegers\Mongodb\Eloquent\SoftDeletes; class 你的模型类名 extends Model { use HasFactory, SoftDeletes; // 新增指定连接配置 protected $connection = 'mongodb'; // 其他模型原有配置 }
3. 清理配置缓存
执行命令清除旧的配置缓存,确保新配置生效:
php artisan config:clear
异常校验补充
如果执行完以上步骤仍有问题,可检查两个依赖项:
- 确认你安装的
jenssegers/laravel-mongodb版本适配Laravel 8,Laravel 8对应使用3.8.x版本即可 - 确认PHP已安装启用
mongodb扩展,可通过php -m命令查看扩展列表验证
内容的提问来源于stack exchange,提问作者Zibon Badi
相关产品推荐
相关产品推荐

