Подтвердить что ты не робот

"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 - любые идеи? Спасибо заранее!

4b9b3361

Ответ 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, похоже, вызывает много таких проблем.