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

时间:2015-12-21 15:44:17

标签: php mongodb laravel-5 bson

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';

}

2 个答案:

答案 0 :(得分:2)

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

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

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

enter image description here

检索正在使用的MongoDB版本:

mongod --version\
# db version v3.2.0

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

enter image description here

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

<强> 2。计算机上安装了两个PHP MongoDB驱动程序。

由于不推荐使用MongoClient,因此许多在线教程和文章(包括official mongo-php-driver repository on Github)现在指导安装mongodb,而不是mongo PHP驱动程序。但是之前的年份,每个人都指向mongo分机。

由于从mongomongodb的此更改,我们可能会在php.ini文件中定义两个扩展名。 只需确保在&#34;动态扩展&#34;下定义了一个扩展名。节

enter image description here

希望有人在寻找解决问题的解决方案时能够得到这个答案。#34;对于BSON对象而言,剩余数据太小了#34;通过PHP MongoDB驱动程序使用MongoDB时出错。

答案 1 :(得分:0)

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