2012-03-05 3 views
3

나는 Heroku Django tutorial을 팔로우하고있다. 나는 그것을 정확히 따라 왔다고 믿는다. 나는 그들이 요구 한 것 외에 추가 명령을 실행하지 않았다.Heroku Django : 근로자를 돌리는 것

그러나 Celery 및 Kombu 테이블 ("작업자 실행"섹션 아래)을 동기화하는 부분에 도달하면 버그가 발생합니다.

... 
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. 

누구 전에이 문제로 실행 : 자신의 명령 python hellodjango/manage.py syncdb에서

입력하면, 다음 나에게 준다? 튜토리얼에서 명시 적이지 않은 작업을 수행해야합니까?

모든 힌트를 크게 높이세요!

+0

이봐, 로컬로 테이블을 만드는 데 동일한 문제가 발생했습니다. 대신 sqlite3을 로컬 db로 사용하는 것이 좋겠지 만 리모컨과 충돌이 발생합니까? 왜냐하면 heroku remote는 여전히 postgresql을 사용하고 있기 때문입니다. – Yulong

답변

1

귀하의 출력은 로컬 syncdb을 실행합니다. 데이터베이스 애드온을 활성화하면 구성에 DATABASE_URL이 설정되고 따라서 다이노노스의 환경이 설정됩니다 (heroku config 참조). 무엇을하지 않을지는 로컬에서 DATABASE_URL으로 설정해야합니다. 직접 (또는 다른 로컬 데이터베이스를 정렬해야합니다.)

+0

로컬로 sqlite 데이터베이스를 추가했는데 (로컬 인 것처럼 생각했습니다), 로컬로 구성되었고, 모든 것이 작동하기 시작했습니다! 감사 – Alexandre

0

DATABASE 사전이 정의되지 않았기 때문에 가능성이 있습니다. 당신이 환경 변수에서 데이터베이스를 읽어야이 코드를 추가하려고 할 수 다음 셀러리 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() 
+0

이 코드를'settings.py'에 추가하려고 시도했지만, syncdb를 할 때 여전히 똑같은 오류가 발생합니다. 이 튜토리얼은 "장고 애플리케이션을 배포 할 때, 컴파일 프로세스는 settings.py에 DATABASE_URL 환경 변수를 사용하기 위해 [위의 코드 스 니펫]을 추가합니다"라고 말합니다. – Alexandre

+0

위의 "데이터베이스 엔진 설정을 설정하지 않았습니다"(업데이트 됨) 버그에 대한 단서가 있습니까? 이 튜토리얼을 성공적으로 실행할 수있게 되었습니까? 당신이 줄 수있는 도움이 멋질 것입니다. – Alexandre

관련 문제