Приложение 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 импортированы.
В итоге я скопировал код, который был в моем проекте, и заново инициализировал свой проект с нуля.