3

我正在关注Heroku Django 教程。我相信我完全遵循了它。除了他们要求的之外,我没有运行其他命令。

但是,当我到达同步 Celery 和 Kombu 表的部分(在“运行 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.

有人遇到过这个问题吗?我应该做一些教程中没有明确说明的事情吗?

任何提示将不胜感激!

4

2 回答 2

1

您的输出来自syncdb本地运行。启用数据库插件将DATABASE_URL在您的配置中设置,因此也将设置在 dynos 的环境中(请参阅 参考资料heroku config)。它不会做的是在DATABASE_URL本地设置 - 你需要自己做(或对其他一些本地数据库进行排序)

于 2012-04-17T00:11:27.753 回答
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()
于 2012-03-05T19:53:24.840 回答