Django - Добавление второй записи базы данных приводит к сбою.Django больше не использует «по умолчанию» - PullRequest
0 голосов
/ 17 апреля 2019

Моя база данных и проект отлично работают, используя эту настройку базы данных:

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'myprojectdb',
        'USER': 'myprojectuser',
        'PASSWORD': 'my_secret_password',
        'HOST': 'localhost',
        'PORT': '5432',
        'ATOMIC_REQUESTS': True
    },
}

Но я хочу добавить запись базы данных «только для чтения» для моего пользователя db только для чтения, например, так, чтобы я мог запустить django-sql-explorer :

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'myprojectdb',
        'USER': 'myprojectuser',
        'PASSWORD': 'my_secret_password',
        'HOST': 'localhost',
        'PORT': '5432',
        'ATOMIC_REQUESTS': True
    },
    'readonly': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'myprojectdb',
        'USER': 'myprojectreadonly',
        'PASSWORD': 'your_eyes_only_secret',
        'HOST': 'localhost',
        'PORT': '5432',
        'ATOMIC_REQUESTS': True
    }
}

А теперь Джанго выдаёт пару разных ошибок. Если я пытаюсь что-то сделать с миграциями, я получаю:

django.db.utils.ProgrammingError: permission denied for relation django_migrations

Если я пытаюсь запустить сервер, я получаю:

"AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'users.User' that has not been installed

Кажется, что когда я добавляю второй параметр базы данных, django пытается использовать его для миграций, запуска сервера и т. Д., Даже если это не «по умолчанию»

Если я закомментирую вторую запись, все снова будет отлично работать.

Есть какие-нибудь рекомендации, как это исправить?


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

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'myprojectdb',
        'USER': 'myprojectuser',
        'PASSWORD': 'my_secret_password',
        'HOST': 'localhost',
        'PORT': '5432',
        'ATOMIC_REQUESTS': True
    },
    'readonly': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'myprojectdb',
        'USER': 'myprojectuser',
        'PASSWORD': 'my_secret_password',
        'HOST': 'localhost',
        'PORT': '5432',
        'ATOMIC_REQUESTS': True
    }
}

1 Ответ

0 голосов
/ 17 апреля 2019

Две конфигурации используют одни и те же имена баз данных. 'NAME': 'myprojectdb' Так что, когда вы пытаетесь выполнить миграцию, dbname кажется конфликтующим, поэтому приложения не могут решить, использовать ли предыдущий или более поздний

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...