2011-12-22 26 views
5

Tôi đang theo dõi this hướng dẫn để có được cần tây và django chạy trên heroku.Heroku Django cần tây: NameError: tên 'DATABASES' không được xác định

Tuy nhiên, tôi nhận được lỗi này trong nhật ký của tôi khi tôi đặt trong mã định cho người lao động:

2011-12-22T05:31:56+00:00 heroku[web.1]: Starting process with command `python canada/manage.py run_gunicorn -b "0.0.0.0:47336" -w 3` 
2011-12-22T05:31:56+00:00 app[web.1]: Unexpected error: (<type 'exceptions.NameError'>, NameError("name 'DATABASES' is not defined",), <traceback object at 0x11a9560>) 
2011-12-22T05:31:56+00:00 app[web.1]: Traceback (most recent call last): 
2011-12-22T05:31:56+00:00 app[web.1]: File "canada/manage.py", line 11, in <module> 
2011-12-22T05:31:56+00:00 app[web.1]:  import settings 
2011-12-22T05:31:56+00:00 app[web.1]: File "/app/canada/settings.py", line 51, in <module> 
2011-12-22T05:31:56+00:00 app[web.1]:  CELERY_RESULT_DBURI = DATABASES['default'] 
2011-12-22T05:31:56+00:00 app[web.1]: NameError: name 'DATABASES' is not defined 
2011-12-22T05:31:57+00:00 heroku[slugc]: Slug compilation finished 
2011-12-22T05:31:57+00:00 heroku[web.1]: State changed from starting to crashed 
2011-12-22T05:31:58+00:00 heroku[web.1]: Process exited 

settings.py của tôi trông giống như

import djcelery 

djcelery.setup_loader() 

BROKER_BACKEND = "djkombu.transport.DatabaseTransport" 
CELERY_RESULT_DBURI = DATABASES['default'] 
... 

Khi tôi được đồng bộ hóa trước khi thêm này dòng, CELERY_RESULT_DBURI = DATABASES['default'], nó chạy tốt. Theo the document

When you deploy a Django application, the compile process appends the following code to your settings.py to use the DATABASE_URL environment variable:

Trả lời

8

Heroku đang thêm cấu hình DATABASES vào cuối số settings.py của bạn, vì vậy khi bạn tham chiếu đến DATABASES trong settings.py của bạn, nó không tồn tại.

Bạn có thể sao chép cài đặt Heroku DATABASES trong tệp của riêng bạn (chỉ cần đọc từ DATABASE_URL từ env, xem: django-heroku-template) hoặc sử dụng buildpack của riêng bạn.

+0

THanks Ill cho bạn biết làm thế nào mà đi, có vẻ là đúng –

+0

Thats chính xác những gì tôi muốn. Cảm ơn! –

0

thử loại này trước khi chạy ứng dụng của bạn:

export DATABASE_URL='postgres://postuser:[email protected]/dbname' 

Sử dụng các biến môi trường là cách dễ nhất để Heroku để tự động thiết lập thông tin cơ sở dữ liệu, mà không sửa đổi settings.py

+1

Bạn có nghĩa là làm xuất khẩu chạy 'heroku DATABASE_URL = 'postgres: // postuser: postpassword @ posthost/dbname'' và sau đó khởi động lại ứng dụng của tôi? Và tôi sẽ phải đưa vào tất cả các thông tin cơ sở dữ liệu của tôi? nếu Heroku có nghĩa vụ phải thêm điều này vào settings.py của tôi tại sao nó không hoạt động, vì tôi đã làm theo hướng dẫn này? –

Các vấn đề liên quan