首页 > 解决方案 > laravel 5.8 和 mongodb 4.2 连接问题

问题描述

我的系统有 2 个 xampp,一个是 PHP 5.6,另一个是 PHP 7.3。我已经在环境变量中正确地包含了两个 PHP 版本。我正在尝试将我的 laravel v5.8 应用程序与 mongodb v4.2 连接起来。

我在我的应用程序中使用了 jensegers/mongodb 包。我还在 app.php 中添加了 MongodbServiceProvider。我正在为 mongodb GUI 使用 Robo 3T。现在,每当我尝试将数据发布到 mongodb 集合时,我都会收到身份验证失败错误。N= 以下是我在应用程序中使用的代码。

Database.php(配置文件夹)

'mongodb' => [
            'driver'   =>  'mongodb',
            'host'     =>  env('MONGO_DB_HOST', 'localhost'),
            'port'     =>  env('MONGO_DB_PORT', 27017),
            'database' =>  env('MONGO_DB_DATABASE'),
            'username' =>  env('MONGO_DB_USERNAME'),
            'password' =>  env('MONGO_DB_PASSWORD'),
            'options' => []
        ],

Todo.php(模型)

namespace App;

use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

class Todo extends Eloquent
{
    protected $connection = 'mongodb';

    protected $collection = 'todo';

    protected $fillable = [
        'title', 'desc'
    ];
}

.env 文件

MONGO_DB_HOST=127.0.0.1
MONGO_DB_PORT=27017
MONGO_DB_DATABASE=mongocrud
MONGO_DB_USERNAME=
MONGO_DB_PASSWORD=

错误信息概述:


(1/1) AuthenticationException
Authentication failed.

in Find.php line 299
at Server->executeQuery('mongocrud.todo', object(Query), array('readPreference' => object(ReadPreference)))
in Find.php line 299
at Find->execute(object(Server))
in Collection.php line 624
at Collection->find(array(), array('typeMap' => array('root' => 'array', 'document' => 'array'), 'readPreference' => object(ReadPreference), 'readConcern' => object(ReadConcern)))

标签: laravelmongodbeloquent

解决方案


首先删除供应商文件夹并替换 composer.json 中的以下 2 行:

"jenssegers/mongodb": "^3.5",

"laravel/framework": "5.8.*",

"jenssegers/mongodb": "^3.5",

"laravel/framework": "5.7.*",

& 更新作曲家

更新作曲家后清除配置缓存。


推荐阅读