"settings.DATABASES неправильно настроен" ошибка выполнения syncdb с django 1.4
Я создал простой проект django 1.4 и пытаюсь выпустить syncdb для создания схемы (postgres) db. Я получаю эту ошибку: -
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 232, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 371, in handle
return self.handle_noargs(**options)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/commands/syncdb.py", line 57, in handle_noargs
cursor = connection.cursor()
File "/usr/local/lib/python2.6/dist-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.
Мой файл settings.py выглядит так: -
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'test', # Or path to database file if using sqlite3.
'USER': 'test', # Not used with sqlite3.
'PASSWORD': 'test', # 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.
}
}
Я могу подключиться к базе данных с помощью psql OK - любые идеи? Спасибо заранее!
Ответы
Ответ 1
Возможно, django не обращается к файлу settings.py, который, по вашему мнению, использует.
Попробуйте явно указать django в ваш файл настроек с помощью --settings
./manage.py --settings=nameofproject.settings runserver/syncdb
Если это работает, вам нужно выяснить, почему django импортирует неправильный файл настроек.
Вы случайно отказались от 1.3 до 1.4?
Ответ 2
Для меня у меня была аналогичная проблема с django 1.6 прямо сейчас:
ПРЕДПОСЫЛКИ
Проект Django 1.6 heroku с использованием базы данных Heroku Postgresql
Я хотел развить непосредственно на сервере postgresql (так что не копируйте бит .postgresql_psycopg2, если вы не используете postgresql)
- Нет проблем с использованием локального psql db
-
Получил эту ошибку, когда я раскомментировал строку для использования heroku db
DATABASES['default'] = dj_database_url.config(default=os.getenv('DATABASE_URL'))
Первоначальная попытка состояла в том, чтобы добавить дополнительные сведения, например, другую строку,
DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'
Это не сработало, потому что тогда ошибка спросила меня об NAME, которую он отклонил.
Решение
В конце концов, это решило это:
-
Я запустил "конфигурацию героя", чтобы увидеть мои данные, представленные мне в формате:
postgres://user:[email protected]/dbname
-
Я обновил файл settings.py, чтобы отразить эти детали:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'your_heroku_db_name',
'USER': 'your_heroku_db_user_name',
'PASSWORD': 'your_heroku_password',
'HOST': 'ec2-23-21-133-106.compute-1.amazonaws.com', # Or something like this
'PORT': '5432',
}
}
Этот совет от fooobar.com/questions/164333/...
Примечание: мой следующий план состоит в том, чтобы абстрагировать их обратно в .env-переменные, а не оставлять их видимыми в settings.py
-
Затем я прокомментировал более позднюю строку,
# DATABASES['default'] = dj_database_url.config(default=os.getenv('DATABASE_URL'))
поэтому DATABASES был указан только один раз в файле settings.py
Таким образом, программа считывает все необходимое для подключения к postgresql heroku db
например, теперь python manage.py syncdb
работает для меня
Если вы хотите попробовать локально, прокомментируйте все выше и вместо этого установите локальный сервер postgresql и раскомментируйте локальный эквивалент вышеперечисленного:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'cool01db',
'USER': '',
'PASSWORD': '',
'HOST': 'localhost', # '127.0.0.1' probably works also
'PORT': '5432',
}
}
Что из fooobar.com/questions/164335/...
Ответ 3
В вашем проекте есть два файла settings.py(если ваша ОС похожа на UNIX):
- Один из них находится в первом каталоге
- Один из них находится в каталоге dir/dir
Вам нужно записать ДВИГАТЕЛЬ ко второму (dir/dir/setting.py
).
Удачи!
Ответ 4
Какой файл settings.py вы обновили? Сначала у меня была такая же проблема, когда я не читал о изменениях Django от 1.3 до 1.4, что вызывает двойной импорт. Вот отрывок из https://docs.djangoproject.com/en/1.4/releases/1.4/#updated-default-project-layout-and-manage-py. Последняя версия Django (в настоящее время 1.4.2) поставляется с обновленным макетом проекта по умолчанию и файлом manage.py для команды управления запуском проекта, а макет проекта по умолчанию изменен.
Чтобы исправить вашу ошибку, правильный файл settings.py, который вы должны использовать, НЕ является тем, который находится в основном каталоге проекта, это тот, который находится внутри каталога, который создается внутри каталога проекта (с тем же именем).
Ответ 5
Повторная установка Django сделала трюк для меня (фактически удалив файл яйца), как предложено в следующей ссылке.
https://code.djangoproject.com/ticket/18058
Похоже, что обновление с 1.3 до 1.4, похоже, вызывает много таких проблем.