MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongo-PHP - MongoCursor изключение с MongoDB PHP драйвер v1.6

Това може да е свързано с грешка, въведена в 1.6.0 относно итерация с hasNext() и getNext() :PHP-1382 . Оттогава корекция беше обединена с v1.6 клон и трябва да бъде пуснат по-късно тази седмица като 1.6.1.

Въпреки това, грешката относно hasNext() всъщност беше, че последният документ в набора от резултати ще бъде пропуснат по време на повторение. Ако стартирам оригиналния ви скрипт срещу 1.6.0, масивът съдържа null стойност като негов последен елемент. С корекцията на място, масивът ще съдържа всички документи, както се очаква. Не мога да възпроизведа изключението, което виждате с двете версии.

Това изключение всъщност се хвърля от вътрешни проверки на структурите от данни на C, за да се гарантира, че обектът на курсора е правилно свързан с MongoClient и връзка със сокет. Вижте MONGO_CHECK_INITIALIZED() макро извиквания в този файл . Повечето от методите на курсора проверяват дали MongoClient е свързан, но hasNext() е уникален с това, че също така проверява за обекта на сокета (вярвам, че други методи просто предполагат, че курсорът с MongoClient също има сокет). Ако това изключение е наистина възпроизводимо за вас и желаете да направите известно отстраняване на грешки с разширението, ще ми е много интересно да разбера коя от двете проверки хвърля грешката.

Като странична бележка, трябва също да посочите "replicaSet" опция при конструиране на MongoClient. Това трябва да има името на комплекта реплики, което гарантира, че драйверът може правилно да игнорира връзките към хостове, които не са член на предвидения набор реплики.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoDB различен и къде в същата заявка?

  2. Динамичен xml в mongoDB

  3. MongoDB:Няма разрешение от администратора да изпълни команда

  4. Въпросителна променлива Typescript

  5. Какво се връща от заявка на Mongoose, която не намира съвпадения?