3

HerokuDjangoチュートリアルに従っています。私はそれを正確に守ったと思います。私は彼らが要求したもの以外に追加のコマンドを実行しませんでした。

ただし、CeleryテーブルとKombuテーブルを同期する部分(「ワーカーの実行」セクションの下)に到達すると、バグが発生します。

コマンド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れ、dynoの環境が設定されます(を参照heroku config)。それが行わないことはDATABASE_URLローカルに設定されます-あなたはそれを自分で行う必要があります(または他のローカルデータベースをソートする)

于 2012-04-17T00:11:27.753 に答える
0

これは、DATABASEディクショナリが未定義であることが原因である可能性があります。環境変数からデータベースを読み取る必要があるこのコードを追加して、CELERYdbをセットアップできますか?

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 に答える