laravel mongodb关闭客户端连接剩余数据太小

jim*_*ald 5 php mongodb bson laravel-5

Route::get('/', function () {
    $tweets = Tweet::all();
    return view('welcome', ['tweets' => $tweets]);
});
Run Code Online (Sandbox Code Playgroud)

我正在使用mongodb制作一个laravel应用程序.

当我转到'/'时,我在mongod终端中发现错误

AssertionException handling request, closing client connection: 10304 Client Error: Remaining data too small for BSON object
Run Code Online (Sandbox Code Playgroud)

这是我的推文模型(在App\Tweet中):

namespace App;

use Jenssegers\Mongodb\Model as Eloquent;

class Tweet extends Eloquent {

    protected $collection = 'tweets_collection';

}
Run Code Online (Sandbox Code Playgroud)

Nik*_*iko 2

出现这个问题()至少有两个原因Client Error: Remaining data too small for BSON object

1. PHP MongoDB驱动与机器上安装的MongoDB不兼容。
(最初在第一个答案中提到)。

检查页面上您计算机上设置的 PHP 驱动程序版本<?php phpinfo();

在此输入图像描述

检索正在使用的 MongoDB 版本:

mongod --version\
# db version v3.2.0
Run Code Online (Sandbox Code Playgroud)

使用MongoDB网站上的兼容性表查看检查的PHP MongoDB驱动版本是否与MongoDB版本兼容:

在此输入图像描述

如果版本不兼容,则需要卸载现有部件之一并安装兼容版本。根据我自己的经验,更改 PHP MongoDB 驱动程序要容易得多,因为只.so需要不同的扩展文件。

2. 机器上安装了两个 PHP MongoDB 驱动程序。

由于MongoClient已弃用,许多在线教程和文章(包括Github 上的官方 mongo-php-driver 存储库)现在指导安装mongodb,而不是mongoPHP 驱动程序。然而,一年多前,每个人都在谈论mongo延期。

由于从mongo到的这一更改mongodb,我们可能会获得php.ini文件中定义的两个扩展名。只需确保“动态扩展”部分下仅定义了一个扩展

在此输入图像描述


希望有人在寻找解决方案来修复通过 PHP MongoDB 驱动程序使用 MongoDB 时出现的“对于 BSON 对象来说剩余数据太小”错误时,这个答案会很有用。