2011-08-05 8 views
10

मैं अजवाइन और django सेट करने की कोशिश कर रहा हूँ, लेकिन celery_taskmeta तालिका नहीं बनाई जा रही है।django में syncdb चलाते समय celery_taskmeta और अन्य टेबल क्यों नहीं बनाए जा रहे हैं?

मैंने कई (हालिया) ट्यूटोरियल का पालन किया है, djcelery और djkombu को मेरे install_apps में जोड़ा है। मेरी सेटिंग पर 'BROKER_TRANSPORT = "djkombu.transport.DatabaseTransport"' लाइन, आदि जोड़ा

मैं डेमॉन ठीक चला सकते हैं, और यह कार्य निष्पादित होगा, लेकिन यह अंत में इस ट्रैस बैक बाहर थूक:

==============

2011-08-05 16:21:16,231: ERROR/MainProcess] Task slate.modules.filebrowser.tasks.gen_thumb_task[0afc564b-cc54-4f4c-83f5-6db56fb23b76] raised exception: DatabaseError('no such table: celery_taskmeta',) 
Traceback (most recent call last): 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/worker/job.py", line 107, in execute_safe 
    return self.execute(*args, **kwargs) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/worker/job.py", line 125, in execute 
    return super(WorkerTaskTrace, self).execute() 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/execute/trace.py", line 79, in execute 
    retval = self._trace() 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/execute/trace.py", line 93, in _trace 
    r = handler(trace.retval, trace.exc_type, trace.tb, trace.strtb) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/worker/job.py", line 140, in handle_success 
    self.task.backend.mark_as_done(self.task_id, retval) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/backends/base.py", line 54, in mark_as_done 
    return self.store_result(task_id, result, status=states.SUCCESS) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/backends/base.py", line 194, in store_result 
    return self._store_result(task_id, result, status, traceback, **kwargs) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/djcelery/backends/database.py", line 20, in _store_result 
    traceback=traceback) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/djcelery/managers.py", line 36, in _inner 
    return fun(*args, **kwargs) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/djcelery/managers.py", line 154, in store_result 
    "traceback": traceback}) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/djcelery/managers.py", line 78, in update_or_create 
    return self.get_query_set().update_or_create(**kwargs) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/djcelery/managers.py", line 62, in update_or_create 
    obj, created = self.get_or_create(**kwargs) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/django/db/models/query.py", line 378, in get_or_create 
    return self.get(**lookup), False 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/django/db/models/query.py", line 344, in get 
    num = len(clone) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/django/db/models/query.py", line 82, in __len__ 
    self._result_cache = list(self.iterator()) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/django/db/models/query.py", line 273, in iterator 
    for row in compiler.results_iter(): 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 680, in results_iter 
    for rows in self.execute_sql(MULTI): 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql 
    cursor.execute(sql, params) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site- packages/django/db/backends/util.py", line 34, in execute 
    return self.cursor.execute(sql, params) 
    File "/Users/erichutchinson/python-env/slate/lib/python2.7/site- packages/django/db/backends/sqlite3/base.py", line 234, in execute 
    return Database.Cursor.execute(self, query, params) 
DatabaseError: no such table: celery_taskmeta 

- ========================== ==

तो सिंकडीबी के दौरान मुझे यह तालिका कैसे मिलती है?

+1

क्या आपने अपने 'INSTALLED_APPS' में' djcelery' जोड़ा था? – MatToufoutu

+0

हां, djcelery.models में अन्य टेबल सिंक हो गए हैं ठीक है – Hutch

+1

एक ही समस्या थी। यदि आपने पुराने संस्करण से सेलेरी अपडेट की है, तो सिंकडब नई टेबल नहीं बनायेगा, आपको नई स्थापित करने की आवश्यकता है और नई टेबल बनाने के लिए "पायथन प्रबंधन.py माइग्रेट" करें, –

उत्तर

5

ठीक उसी मुद्दे में Ran, ताजा स्थापित करें। सेलेरी और डीजेंगो-सेलेरी को 2.2.7 तक डाउनग्रेड करना और सिंकडब को पुन: चालू करना इसे हल करना (अंतरिम के लिए, वैसे भी)।

+0

मैं इस "समाधान" के लिए भी झुका सकता हूं। और यहां मैंने सोचा कि मैं पिछले 4hours के लिए कुछ गलत कर रहा था ... –

+0

यह काम किया, इसके अलावा CELERY_RESULT_BACKEND = 'बग – Hutch

+0

के लिए भी घड़ी के लिए काम किया। मैं अभी भी डीजेसेलरी को अनदेखा करने के लिए दक्षिण की स्थापना कर रहा हूं क्योंकि माइग्रेट अभी भी ऐसा करना चाहता था। सुनिश्चित करें कि आपकी दक्षिण_ माइग्रेशन इतिहास तालिका में कोई डीजेसेलरी प्रविष्टियां नहीं हैं या इससे कुछ समस्याएं पैदा होंगी। –

0

समस्या शायद SQLite3 है। आप इसे Django में समवर्ती रूप से उपयोग नहीं कर सकते हैं और यह एक भ्रामक त्रुटि फेंक रहा है। PostgreSQL या MySQL पर स्विच करें, खासकर सेलेरीड विकास के लिए।

या, गोली, और सेटअप RabbitMQ काटने ...

+1

मैं पोस्टग्रेस का उपयोग कर रहा हूं और ऊपर एक ही समस्या है। –

1

मुझे manage.py dumpdata चलाते समय यह त्रुटि मिली। मैंने सेलेरी और django-celery पैकेजों के साथ एक MySQL डेटाबेस के दो अलग-अलग 2.2.x संस्करणों की कोशिश की। मेरे मामले में 2.2.7 तक अपग्रेड करने से इस मुद्दे को ठीक नहीं किया गया। इस गीथब Issue #34 पर काम क्या सलाह मिली।

Django 1.3+ पर डंपडाटा का उपयोग करते समय, --exclude djcelery विकल्प जोड़ें। (बेशक, यदि आप केवल ऐप और मॉडलों का एक सबसेट डंप कर रहे हैं तो आपको गायब तालिका त्रुटि को वैसे भी नहीं मिलेगा। और यदि आप पहले स्थान पर डंपडाटा का उपयोग नहीं कर रहे हैं, तो यह उत्तर लागू नहीं होता है।)

5

मैं एक ऐसी ही त्रुटि हो रही थी:

DatabaseError: no such table: djkombu_queue 

मेरे मामले में, मैं INSTALLED_APPS सेटिंग करने के लिए एक संबंधित तकनीक से एक Django ऐप को जोड़ने की जरूरत है। मेरे मामले में, यह था: kombu.transport.django

उसके बाद, मैं syncdb पुन: उपयोग करता हूं और सबकुछ काम कर रहा था। अपने मामले में, शायद रास्ते में अजवाइन अंडे में कुछ जोड़ें।

+1

मुझे आपके जैसा ही मुद्दा था, उसी फिक्स के साथ हल किया गया - बहुत सराहना की! –

+1

मेरे लिए हल हो गया। आप एक शीर्ष विद्वान – rikAtee

17

यहां समस्या वास्तव में है कि दक्षिण डीजेसेलरी टेबल का प्रबंधन करता है। आपको डीजेसेलरी को इसकी नई स्कीमा में माइग्रेट करने की आवश्यकता है। आप किसी पुराने संस्करण से उन्नत बनाया djcelery और आप पहले से ही स्थापित तालिकाओं का एक सेट है, तो आपको पहले एक नकली प्रवास करने की जरूरत है:

python manage.py migrate djcelery 0001 --fake 
python manage.py migrate djcelery 

मैं पहले की तरह ही समस्या नहीं थी लेकिन इस यह तय की।

+0

हैं, यह मेरे लिए काम करता है, ठीक है, मुझे djcelery.transport के प्रवासन पर नकली 0001 की आवश्यकता है –

+0

मुझे नकली 0002 भी था। उसके बाद फिर से चल रहा है। –

+0

बिल्कुल सही, धन्यवाद! हालांकि मुझे नकली प्रवास की आवश्यकता नहीं थी। बस दूसरा आदेश चलाया और यह लापता टेबल बनाया। – Sarang

10

मैं भी निम्न त्रुटि हो रही थी:

DatabaseError: no such table: djkombu_queue 

इस पर ध्यान देने के बाद थोड़ा आगे मैं इस समस्या (here से खींचा) का समाधान करने का सही तरीका मानना ​​है कि यह जोड़ने के लिए INSTALLED_APPS के लिए निम्न:

INSTALLED_APPS = ('djcelery.transport',) 

kombu.transport.django जोड़ना गलत लगा।

+1

मैं इस फिक्स को प्रमाणित कर सकता हूं! – rikAtee

संबंधित मुद्दे