laravel mongodb закрывает клиентское соединение, оставшиеся данные слишком малы

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

Я делаю приложение Laravel, используя mongodb.

Когда я иду в ‘/’, я получаю сообщение об ошибке в терминале 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';

}

5

Решение

Есть как минимум две причины, почему эта проблема (Client Error: Remaining data too small for BSON object) появляется:

1. PHP драйвер MongoDB несовместим с установленным на машине MongoDB.
(первоначально упоминается в первый ответ).

Проверьте версию драйвера PHP, установленную на вашем компьютере, на <?php phpinfo(); страница:

введите описание изображения здесь

Получить версию MongoDB, используемую с:

mongod --version\
# db version v3.2.0

использование таблица совместимости на сайте MongoDB чтобы увидеть, совместима ли проверенная версия драйвера PHP MongoDB с версией MongoDB:

введите описание изображения здесь

Если версии несовместимы, необходимо удалить одну из существующих частей и установить совместимую версию. Исходя из моего собственного опыта, гораздо проще изменить драйвер PHP MongoDB, поскольку только разные .so требуется расширение файла.

2. На машине установлены два драйвера PHP MongoDB.

поскольку MongoClient устарело, многие учебники и статьи онлайн (в том числе официальный репозиторий mongo-php-driver на Github) теперь руководства по установке mongodbне mongo PHP драйвер. Годом ранее все указывали на mongo расширение, однако.

Из-за этого изменения mongo в mongodbмы могли бы получить оба расширения, определенные в php.ini файл. Просто убедитесь, что в разделе «Динамическое расширение» определено только одно расширение.:

введите описание изображения здесь


Надеюсь, кто-нибудь получит этот ответ полезным, когда ищет решение, чтобы исправить ошибку «Оставшиеся данные слишком малы для объекта BSON» при работе с MongoDB через драйвер PHP MongoDB.

1

Другие решения

Проблема заключалась в том, что Laravel не смог связаться с MongoDB, потому что я использовал php-драйвер mongodb-1.1 и MongoDB 3.2 вместе. Согласно таблице, найденной на этой странице: https://docs.mongodb.org/ecosystem/drivers/php/, эти две версии не совместимы. Я удалил MongoDB 3.2 и установил MongoDB 3.O, и проблема была решена.

0