2012-03-05 3 views
3

Я следую за Heroku Django tutorial. Я считаю, что я точно это сделал. У меня не было никаких дополнительных команд, кроме того, что они просили.Heroku Django: Запуск рабочего

Однако, когда я добираюсь до той части, где я синхронизую таблицы Celery и Kombu (в разделе «Запуск рабочего»), я получаю ошибку.

Typing в своей команде 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

эй, я столкнулся с той же проблемой при создании таблиц локально. Я нахожу, что вместо этого вы используете sqlite3 как локальный db, но это создаст конфликт с удаленным? потому что у героя remote используется postgresql. – Yulong

ответ

1

Ваш выход из запуска syncdb локально. Включение аддона базы данных установит DATABASE_URL в вашу конфигурацию и, следовательно, среду динамиков (см. heroku config). То, что он не будет делать, устанавливается DATABASE_URL локально - вам нужно сделать это самостоятельно (или отсортировать некоторую другую локальную базу данных)

+0

Я добавил базу данных sqlite локально (думаю, это все, что я сделал), настроил ее локально, и все началось! благодаря – Alexandre

0

Возможно, ваш словарь DATABASE не определен. Вы можете попытаться добавить этот код, который следует читать вашу базу данных из переменной окружения, то СЕЛЬДЕРЕЯ дб может быть установлен от него:

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 я все равно получаю ту же самую ошибку. В учебнике говорится: «Когда вы развертываете приложение Django, процесс компиляции добавляет [фрагмент кода выше] к вашим параметрам settings.py для использования переменной среды DATABASE_URL». – Alexandre

+0

Какие-либо подсказки на тему «не заданы настройки базы данных базы данных» (обновлено)? Вам удалось успешно запустить этот учебник? Любая помощь, которую вы можете дать, была бы замечательной. – Alexandre

Смежные вопросы