如何在OctoberCMS中使用MongoDB并解决迁移失败问题
OctoberCMS搭配MongoDB迁移失败解决方案
前置依赖检查
- 首先确认已安装PHP MongoDB扩展:执行
php -m | grep mongodb查看是否已加载,未安装的话执行pecl install mongodb,安装完成后在php.ini中添加extension=mongodb.so重启web服务即可 - 确认已安装适配版本的Laravel MongoDB驱动包:根据你使用的OctoberCMS对应Laravel版本安装匹配的
mongodb/laravel-mongodb包,OctoberCMS v3对应Laravel 9/10可执行composer require mongodb/laravel-mongodb:^3.9
配置项校验
database.php配置修正
- 默认连接的driver参数必须设置为
mongodb,不能保留默认的mysql配置 - 开启MongoDB认证的场景下必须添加
'auth_source' => env('DB_AUTH_SOURCE', 'admin')参数,避免认证失败 - 所有连接参数要和.env文件中的配置项一一对应,不要硬编码错误的库名、账号密码
app.php配置修正
- 找到
providers配置段,注释掉默认的Illuminate\Database\DatabaseServiceProvider::class,替换为MongoDB\Laravel\MongoDBServiceProvider::class,否则系统会默认调用SQL驱动执行迁移操作
迁移文件适配
- 不能在迁移文件中使用SQL专属的结构方法,比如
$table->increments('id')、$table->foreign()等,MongoDB默认主键为_id,无需手动定义自增主键 - 移除所有SQL专属的索引、外键定义语句,MongoDB的索引建议直接在模型中通过
$indexes属性定义
执行前操作
- 先执行
php artisan config:clear清除配置缓存,避免加载旧的配置参数 - 执行
php artisan tinker,输入MongoDB::connection()->getMongoClient()->listDatabases()测试数据库连接,能正常输出数据库列表说明连接配置无误 - 确认连接正常后再执行
php artisan october:migrate即可
内容的提问来源于stack exchange,提问作者Riyan Purba
相关产品推荐
相关产品推荐

