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

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

}

最佳答案

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

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

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

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但是,扩展名。

由于 mongo 的这一变化至mongodb ,我们可能会得到 php.ini 中定义的两个扩展文件。 请确保,“动态扩展”部分下只定义了一个扩展:

enter image description here


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

关于php - laravel mongodb 关闭客户端连接 剩余数据太小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34399409/

相关文章:

php - 将 WHERE IN 子句的参数与 PDO 绑定(bind)

php - 带有 GET 参数(或同等参数)的电子邮件地址

php - 获取模拟 Doctrine\ORM\QueryBuilder

ruby-on-rails - Mongoid - 保存和 update_attribute 不持久

php - 按城市显示数组数据

按月或日聚合的 MongoDB 索引策略

javascript - Map/Reduce 示例...这是正确的吗?

php - 如何在 laravel 中使用 IF(expression, value_if_true,value_if_false) 创建条件查询?

使用Guard的Laravel Passport多重身份验证

javascript - 当用户重新访问我的网站时如何不再显示弹出窗口?