MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongo-PHP — wyjątek MongoCursor ze sterownikiem MongoDB PHP w wersji 1.6

Może to być związane z błędem wprowadzonym w 1.6.0 dotyczącym iteracji z hasNext() i getNext() :PHP-1382 . Od tego czasu poprawka została połączona z v1.6 oddział i powinien zostać wydany jeszcze w tym tygodniu jako 1.6.1.

To powiedziawszy, błąd dotyczący hasNext() było w rzeczywistości, że ostatni dokument w zestawie wyników zostanie pominięty podczas iteracji. Jeśli uruchomię twój oryginalny skrypt w wersji 1.6.0, tablica zawiera null wartość jako ostatni element. Po wprowadzeniu poprawki tablica będzie zawierać wszystkie dokumenty zgodnie z oczekiwaniami. Nie mogę odtworzyć wyjątku, który widzisz w żadnej wersji.

Ten wyjątek jest w rzeczywistości zgłaszany z wewnętrznych kontroli struktur danych C, aby upewnić się, że obiekt kursora jest prawidłowo skojarzony z połączeniem MongoClient i gniazdem. Zobacz MONGO_CHECK_INITIALIZED() wywołania makr w tym pliku . Większość metod kursora sprawdza, czy MongoClient jest powiązany, ale hasNext() jest wyjątkowy, ponieważ sprawdza również obiekt gniazda (wierzę, że inne metody po prostu zakładają, że kursor z MongoClient również ma gniazdo). Jeśli ten wyjątek jest dla Ciebie naprawdę powtarzalny i chcesz przeprowadzić debugowanie z rozszerzeniem, byłbym bardzo zainteresowany, aby dowiedzieć się, które z dwóch sprawdzeń powoduje błąd.

Na marginesie, powinieneś również określić "replicaSet" opcja podczas konstruowania MongoClient. Powinien mieć nazwę zestawu replik, co zapewnia, że ​​sterownik może poprawnie ignorować połączenia z hostami, które nie są członkiem zamierzonego zestawu replik.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wdrażanie paginacji za pomocą MongoDB, Express.js i Slush

  2. Wysyłanie zapytań do tablicy tablic w MongoDB

  3. Mongoose unshift findAndUpdateById

  4. Jak używać operatora $in w mongodb z dwoma polami w java

  5. Aliasy pól z Mongoid i Rails