我正在关注Heroku Django tutorial。我相信我完全遵循了它。除了他们要求的内容之外,我没有附加任何其他命令。
然而,当我到达同步Celery和Kombu表的部分(在“Running a Worker”部分下)时,我收到了一个错误。
输入他们的命令python hellodjango/manage.py syncdb
,给我以下内容:
...
File "/Users/Alex/Coding/getcelery/venv/lib/python2.7/site-packages/django/db/backends/dummy/base.py", line 15, in complain
raise ImproperlyConfigured("You haven't set the database ENGINE setting yet.")
django.core.exceptions.ImproperlyConfigured: You haven't set the database ENGINE setting yet.
之前有人遇到过这个问题吗?我应该做一些在教程中不明确的事情吗?
任何提示都将不胜感激!
答案 0 :(得分:1)
您的输出是在本地运行syncdb
。启用数据库插件会在配置中设置DATABASE_URL
,从而设置dynos的环境(请参阅heroku config
)。它不会做的是在本地设置DATABASE_URL
- 你需要自己做(或者对其他一些本地数据库进行排序)
答案 1 :(得分:0)
可能是因为您的DATABASE字典未定义。您是否可以尝试添加此代码,该代码应从环境变量中读取数据库,然后可以从中设置CELERY db:
import os
import sys
import urlparse
# Register database schemes in URLs.
urlparse.uses_netloc.append('postgres')
urlparse.uses_netloc.append('mysql')
try:
# Check to make sure DATABASES is set in settings.py file.
# If not default to {}
if 'DATABASES' not in locals():
DATABASES = {}
if 'DATABASE_URL' in os.environ:
url = urlparse.urlparse(os.environ['DATABASE_URL'])
# Ensure default database exists.
DATABASES['default'] = DATABASES.get('default', {})
# Update with environment configuration.
DATABASES['default'].update({
'NAME': url.path[1:],
'USER': url.username,
'PASSWORD': url.password,
'HOST': url.hostname,
'PORT': url.port,
})
if url.scheme == 'postgres':
DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'
if url.scheme == 'mysql':
DATABASES['default']['ENGINE'] = 'django.db.backends.mysql'
except Exception:
print 'Unexpected error:', sys.exc_info()