【问题标题】:laravel mongodb closing client connection remaining data too smalllaravel mongodb 关闭客户端连接 剩余数据太小
【发布时间】:2023-03-07 09:32:01
【问题描述】:
Route::get('/', function () {
    $tweets = Tweet::all();
    return view('welcome', ['tweets' => $tweets]);
});

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

当我转到“/”时,我在 mongod 终端中收到一个错误,上面写着

AssertionException handling request, closing client connection: 10304 Client Error: Remaining data too small for BSON object

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

namespace App;

use Jenssegers\Mongodb\Model as Eloquent;

class Tweet extends Eloquent {

    protected $collection = 'tweets_collection';

}

【问题讨论】:

    标签: php mongodb laravel-5 bson


    【解决方案1】:

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

    1. PHP MongoDB 驱动与机器上安装的 MongoDB 不兼容。
    (最初在first answer中提到)。

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

    检索正在使用的 MongoDB 版本:

    mongod --version\
    # db version v3.2.0
    

    使用compatibility table on MongoDB website查看PHP MongoDB驱动版本是否与MongoDB版本兼容:

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

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

    由于MongoClient 已弃用,许多在线教程和文章(包括official mongo-php-driver repository on Github)现在指导安装mongodb,而不是mongo PHP 驱动程序。然而,一年前,每个人都指向mongo 分机。

    由于这种从mongomongodb 的更改,我们可能会在php.ini 文件中定义两个扩展名。 请确保,“动态扩展”部分下只定义了一个扩展


    希望有人在寻找解决方案以解决通过 PHP MongoDB 驱动程序与 MongoDB 一起使用 MongoDB 的“Remaining data too small for BSON object”错误时得到这个有用的答案。

    【讨论】:

      【解决方案2】:

      问题是 Laravel 无法与 MongoDB 通信,因为我同时使用了 mongodb-1.1 php 驱动程序和 MongoDB 3.2。根据此页面上的表格:https://docs.mongodb.org/ecosystem/drivers/php/,这两个版本不兼容。我卸载了MongoDB 3.2,安装了MongoDB 3.O,问题解决了。

      【讨论】:

        猜你喜欢
        • 2016-04-04
        • 2020-12-19
        • 2013-08-10
        • 2013-08-13
        • 1970-01-01
        • 1970-01-01
        • 2015-03-01
        • 2021-03-25
        • 1970-01-01
        相关资源
        最近更新 更多