我有一个完全正常工作的测试项目,它只使用了一个数据库(Django 1.8 + PostgreSQL 9.1)。然后,我被要求添加多个数据库。我删除了我正在使用的一个数据库并创建了3个新数据库。我像这样修改了settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'core',
'USER': 'chris',
'PASSWORD': '***',
'HOST': 'localhost',
'PORT': '5432',
},
'db1': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'db1',
'USER': 'chris',
'PASSWORD': '***',
'HOST': 'localhost',
'PORT': '5432',
},
'db2': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'db2',
'USER': 'chris',
'PASSWORD': '***',
'HOST': 'localhost',
'PORT': '5432',
}
}
DEFAULT_INDEX_TABLESPACE = 'default'
(使用自动数据库路由,只有一个models.py)
当我尝试进行首次迁移时,我现在得到了这个:
django-admin.py makemigrations --database=db1
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
然后我这样做:
(testproject) chris@ubuntu-pc ~/D/w/testproject> python manage.py shell
>>> from django.conf import settings
>>> settings.DEFAULT_INDEX_TABLESPACE
'default'
>>> settings.configure()
RuntimeError: Settings already configured.
我做错了什么?
答案 0 :(得分:4)
您应该在项目中使用manage.py
而不是django-admin.py
:
python manage.py makemigrations
您无需将数据库名称传递给makemigrations
。但是,您确实需要在迁移时单独迁移每个数据库。
python manage.py migrate --database=db1