Приложение Django не может найти движок базы данных, когда указан движок

Я перепробовал все, что только можно придумать, чтобы запустить начальные миграции с помощью python manage.py migrate и запустить мое приложение django. В настоящее время я получаю следующую ошибку:

Traceback (most recent call last):
  File "manage.py", line 24, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "/usr/lib/python3/dist-packages/django/core/management/commands/dbshell.py", line 22, in handle
    connection.client.runshell()
  File "/usr/lib/python3/dist-packages/django/db/backends/dummy/base.py", line 20, 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.

Но это DATABASES var в моем settings.py файле:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
  • Файл db.sqlite3 находится в месте, указанном в ключе 'NAME'.
  • Папка app находится в подкаталоге и имеет уникальное имя.
  • переменная BASE_DIR построена правильно и не вызывает искажения строки расположения в ключе NAME.
  • Файл models.py находится в подкаталоге папки /app.

У меня совершенно нет идей, как заставить это работать, и я подумываю вообще отказаться от этого проекта.

В случае, если это поможет, вот дерево моего проекта

.
└── randoplant
    ├── db.sqlite3
    ├── __init__.py
    ├── manage.py
    ├── __pycache__
    │   └── __init__.cpython-38.pyc
    └── randoplant_app
        ├── admin.py
        ├── __init__.py
        ├── models.py
        ├── plant.py
        ├── __pycache__
        │   ├── admin.cpython-38.pyc
        │   ├── __init__.cpython-38.pyc
        │   ├── models.cpython-38.pyc
        │   ├── settings.cpython-38.pyc
        │   └── urls.cpython-38.pyc
        ├── settings.py
        ├── urls.py
        └── wsgi.py

Помогите пожалуйста. Я использую Django версии 2.2.12 и нахожусь в оболочке WSL.

проблема заключается в имени, вы должны сделать следующее:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'db.sqlite3',
    }
}

вместо указания пути к базе данных в поле name, и он автоматически создаст для вас файл DB, Вы можете прочитать настройки DATABASES в официальной документации для получения дополнительной информации.

Я проверил вашу папку проекта и она организована как рекомендуется, попробуйте использовать настройки ниже или код ниже в вашем файле настроек:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

Убедитесь, что BASE_DIR определен в вашем файле настроек и импортируйте библиотеку путей как показано ниже:-

from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

Но если вы настаиваете на использовании предыдущего файла конфигурации базы данных, пожалуйста, убедитесь, что модуль os и path импортированы.

В итоге я скопировал код, который был в моем проекте, и заново инициализировал свой проект с нуля.

Вернуться на верх