Django and venv: settings.DATABASES is improperly configured. Please supply the ENGINE value

匿名 (未验证) 提交于 2019-12-03 01:45:01

问题:

This happens when I run python manage.py syncdb. It also happens when I run python manage.py syncdb --mysite.settings. Not sure where to go from here: django isn't recognizing my settings file and I don't know why or how to rectify it.

python ../manage.py syncdb Traceback (most recent call last):   File "../manage.py", line 9, in <module>     execute_from_command_line(sys.argv)   File "/home/ryan/Programming/OpenCV-2.4.2/msheroku/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line     utility.execute()   File "/home/ryan/Programming/OpenCV-2.4.2/msheroku/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute     self.fetch_command(subcommand).run_from_argv(self.argv)   File "/home/ryan/Programming/OpenCV-2.4.2/msheroku/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv     self.execute(*args, **options.__dict__)   File "/home/ryan/Programming/OpenCV-2.4.2/msheroku/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute     output = self.handle(*args, **options)   File "/home/ryan/Programming/OpenCV-2.4.2/msheroku/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle     return self.handle_noargs(**options)   File "/home/ryan/Programming/OpenCV-2.4.2/msheroku/venv/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 57, in handle_noargs     cursor = connection.cursor()   File "/home/ryan/Programming/OpenCV-2.4.2/msheroku/venv/local/lib/python2.7/site-packages/django/db/backends/dummy/base.py", line 15, in complain     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. 

From settings.py

DATABASES = {      'default': {         'ENGINE': 'postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.         'NAME': 'xxx',                      # Or path to database file if using sqlite3.         'USER': 'xxx',                      # Not used with sqlite3.         'PASSWORD': 'xxx',                  # 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.     }    } 

I'm pretty confident that it's not finding the right settings file to begin with.

回答1:

Hi I am assuming you are testing your app using heroku and your trying to connect to your local database ? if so be sure to remove this line of code :

# Parse database configuration from $DATABASE_URL   import dj_database_url   DATABASES['default'] =  dj_database_url.config()  # Honor the 'X-Forwarded-Proto' header for request.is_secure()   SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 

Add it in when you are gonna connect to a database on a anther server.



回答2:

A correct one would look something like this.

DATABASES = {     'default': {         'ENGINE': 'django.db.backends.postgresql_psycopg2', # 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': 'localhost', # Set to empty string for localhost. Not used with sqlite3.         'PORT': '',                      # Set to empty string for default. Not used with sqlite3.     } } 

Edit: changed host to localhost to reflect comments & manage.py

Based on how your running your syncdb

python manage.py syncdb --mysite.settings 

Make sure your manage.py file has the correct DJANGO_SETTINGS_MODULE specified

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 

You should then be able to run syncdb without --mysite.settings

python manage.py syncdb 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!