2013-02-10 35 views
8

Cố gắng làm theo các hướng dẫn here để thiết lập một phiên bản Django trên Heroku.Không đúng cấu hình ("settings.DATABASES được cấu hình không đúng.") Lỗi khi cố gắng thiết lập Django

Got như xa như việc lắp đặt cần tây, cho đến các bước sau đây:

$ python manage.py syncdb 

khi tôi nhận được lỗi sau:

raise ImproperlyConfigured("settings.DATABASES is improperly configured. "django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.

Tôi tin rằng tôi có tập tin settings.py của tôi trong đúng nơi (project-name/project-name) và tôi đang chạy django 1.4.3, nhưng khi tôi cố gắng chạy manage.py diffsettings, tôi nhận được kết quả sau:

BROKER_BACKEND = 'django' ### DATABASES = {'default': {'ENGINE': 'django.db.backends.dummy', 'TEST_MIRROR': None, 'NAME': '', 'TEST_CHARSET': None, 'TIME_ZONE': 'UTC', 'TEST_COLLATION': None, 'PORT': '', 'HOST': '', 'USER': '', 'TEST_NAME': None, 'PASSWORD': '', 'OPTIONS': {}}}

Hoàn toàn không biết mục nhập django.db.backends.dummy xuất phát từ đâu, số settings.py của tôi có số 'ENGINE': 'django.db.backends.postgresql_psycopg2', mà tôi giả định là mục nhập chính xác mặc dù hướng dẫn của Heroku không cho bạn biết cập nhật tại bất kỳ thời điểm nào.

Bất kỳ suy nghĩ nào tôi cần chỉnh sửa ở đây?

+0

mã cài đặt của bạn ở đâu? – catherine

Trả lời

6

Hãy thử thêm những dòng này sau khi thiết lập cơ sở dữ liệu trong settings.py của bạn

# Your Database setting. 
DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 
     'NAME': '', # Or path to database file if using sqlite3. 
     'USER': '', # Not used with sqlite3. 
     'PASSWORD': '', # Not used with sqlite3. 
     'HOST': '', # Set to empty string for localhost. Not used with sqlite3. 
     'PORT': '', # Set to empty string for default. Not used with sqlite3. 
    } 
} 
# Add these two lines. 
import dj_database_url 
DATABASES['default'] = dj_database_url.config(default='sqlite://db/sqlite3.db') 
+0

thực sự là gần, tôi đã có '#import dj_database_url/#DATABASES ['default'] = dj_database_url.config()' trong tập tin cài đặt của tôi cũng như lời gọi 'setup_loader()' để djcelery. Nhận xét ra hai dòng này mang lại cho tôi một 'django.core.exceptions.ImproperlyConfigured: Bạn cần chỉ định NAME trong tệp cài đặt Django của bạn. – fox

+1

Tuyệt vời! Bạn có biết rằng mặc định arg trong dj_url_config() làm cho thiết lập của bạn có sẵn trên môi trường địa phương của bạn? Bằng cách này bạn không phải bận tâm với thiết lập lại db. Happy coding :) –

8

Tôi chạy vào cùng một vấn đề. Trong các tài liệu Heroku tại https://devcenter.heroku.com/articles/django#prerequisites, nó nói thêm những điều sau đây để settings.py:

DATABASES['default'] = dj_database_url.config() 

Bạn có thể vượt qua trong một tham số của:

DATABASES['default'] = dj_database_url.config(default='postgres://user:[email protected]/dbname') 

Và đó sẽ cho phép bạn để phát triển tại địa phương và trên Heroku. Phần thực sự SOLVES vấn đề tôi đã có mặc dù là biến môi trường cấu hình Heroku DATABASE_URL đã không thực sự thiết lập. Để thiết lập điều này, tôi chạy

$ heroku config 

Tôi đã thấy URL cơ sở dữ liệu được gán cho biến cấu hình riêng biệt. Vì vậy, tôi đã tạo một biến mới:

$ heroko config:add DATABASE_URL={#the database url} 

Điều đó giải quyết được vấn đề của tôi. Tôi hy vọng nó sẽ giúp bất cứ ai khác có vấn đề tương tự.

+0

Làm cách nào để xác định "dbname" trong những gì bạn đã đăng? – Eitan

+0

Bạn có thể lấy url cơ sở dữ liệu trong [https://postgres.heroku.com/databases](https://postgres.heroku.com/databases) -> your_database -> URL _show_, sau đó bạn có thể sử dụng url đó làm mặc định. Đảm bảo chạy 'python manage.py di chuyển' trước khi thực hiện thêm hành động cơ sở dữ liệu – KTU

1

Cảm ơn bạn rất nhiều Chatri khi bạn đề xuất thêm mặc định = 'sqlite: //db/sqlite3.db' đã khắc phục sự cố.

+0

Cảm ơn @Rads đã đề cập đến nó.Giải quyết vấn đề của tôi –

+0

Tôi rất vui vì nó đã giúp bạn Shashank. Chúc mừng mã hóa! – Rads

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