使用此数据库设置,我的数据库和项目运行良好:
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 db用户添加一个'readonly'数据库条目,就像这样,以便我可以运行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抛出了几个不同的错误。如果我尝试对迁移做任何事情,我会得到:
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
}
}
这两个配置共享相同的数据库名称'NAME': 'myprojectdb'
所以当你尝试迁移dbname似乎冲突,所以应用程序有一个犹豫不决的使用前一个或后一个