laravel - 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)))
解决方案
首先删除供应商文件夹并替换 composer.json 中的以下 2 行:
"jenssegers/mongodb": "^3.5",
"laravel/framework": "5.8.*",
至
"jenssegers/mongodb": "^3.5",
"laravel/framework": "5.7.*",
& 更新作曲家
更新作曲家后清除配置缓存。