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