2013-04-22 59 views
3

我一直在使用Django 1.3 non-rel和django-mongodb_engine 0.4。正在使用的Mongodb版本是1.8.2,並且事情工作正常。最近我試圖升級到mongodb 2.4.2(最新穩定版)並面臨以下問題。Django無法與mongo同步db 2.4.2

在同步分貝我得到以下異常:

Traceback (most recent call last): 
File "manage.py", line 14, in <module> 
execute_manager(settings) 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line  
438, in execute_manager 
utility.execute() 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 
379, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 191, 
in run_from_argv 
self.execute(*args, **options.__dict__) 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 220, 
in execute 
output = self.handle(*args, **options) 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 351, 
in handle 
return self.handle_noargs(**options) 
File "/usr/local/lib/python2.7/dist- 
packages/django/core/management/commands/syncdb.py", line 90, in handle_noargs 
sql, references = connection.creation.sql_create_model(model, self.style, seen_models) 
File "/usr/local/lib/python2.7/dist-packages/django_mongodb_engine/creation.py", line 
142, in sql_create_model 
self.connection.get_collection(model._meta.db_table, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django_mongodb_engine/base.py", line 98, 
in get_collection 
collection = self.collection_class(self.database, name, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/pymongo/collection.py", line 108, in 
__init__ 
self.__create(kwargs) 
File "/usr/local/lib/python2.7/dist-packages/pymongo/collection.py", line 119, in 
__create 
self.__database.command("create", self.__name, **options) 
File "/usr/local/lib/python2.7/dist-packages/pymongo/database.py", line 393, in command 
msg, allowable_errors) 
File "/usr/local/lib/python2.7/dist-packages/pymongo/helpers.py", line 144, in 
_check_command_response 
raise OperationFailure(msg % details["errmsg"]) 
pymongo.errors.OperationFailure: command SON([('create', u'auth_permission'), ('max', 
False), ('capped', False), ('size', 0.0)]) failed: exception: create collection invalid 
size spec 

異常的原因似乎是某種蒙戈2.X版本之間的不兼容的作爲相比之前的MongoDB verions(< 1.8) 。

有沒有解決這個封頂/不封頂的集合創建問題的方法,從錯誤中可以看出來?

+0

同樣的問題在這裏。我不知道如何解決這個問題 – user1102018 2013-04-25 05:59:24

回答

1

當前createCollection命令驗證size參數並將不大於0的數視爲無效。

this 2.3.1 commit開始,如果傳入的大小是數字,則會發生0檢查。此前斷言後來這種變化是車票SERVER-7543的結果 - 的核心問題是在Django和這裏深入討論:如果您使用的版本,其中包括該https://github.com/django-nonrel/mongodb-engine/pull/134/files#L4L134

:實際修復這裏https://github.com/django-nonrel/mongodb-engine/pull/134修復,我想你需要在Django列表中提出一個問題。