Как исправить django.db.utils.OperationalError: (1046, 'База данных не выбрана')
У меня проблема с колонками в базе данных, когда як использую python manage.py migrate. Я хочу написать код для использования DATABASE_URL в docker-compose.yml, как мне решить эту проблему? Я экспериментировал с написанием этих кодов. Не могли бы вы мне немного посоветовать?
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| DatabaseUBU |
| information_schema |
| mariadb |
| mydb |
| mysql |
| performance_schema |
| sys |
+--------------------+
7 rows in set (0.02 sec)
mysql> create database mariadb;
ERROR 1007 (HY000): Can't create database 'mariadb'; database exists
docker-compose.yml
version: '3.7'
services:
db:
image: mariadb:10
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
- MYSQL_ROOT_PASSWORD=mariadb
- MYSQL_DATABASE=mariadb
- MYSQL_USER=mariadb
- MYSQL_PASSWORD=mariadb
- MARIADB_ROOT_PASSWORD=mysecretpassword
ports:
- 3306:3306
volumes:
- "mysqldata:/var/lib/mysql"
web:
build: .
restart: always
command: python manage.py runserver 0.0.0.0:8000
environment:
- DATABASE_URL=mariadb+mariadbconnector://user:mariadb@db:3306/mariadb
ports:
- "8000:8000"
depends_on:
- db
volumes:
mysqldata:
setting.py
import dj_database_url
import os
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
**dj_database_url.config(default=os.environ.get('DATABASE_URL'))
}
}
в файле setting.py
import os
DATABASE_URL = os.environ.get('DATABASE_URL', '')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mariadb', #add name database
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
if DATABASE_URL:
import dj_database_url
DATABASES['default'] = dj_database_url.config(default=DATABASE_URL)