Django,添加多个数据库错误配置了我的设置

时间:2016-01-07 17:49:15

标签: python django

我有一个完全正常工作的测试项目,它只使用了一个数据库(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.

我做错了什么?

1 个答案:

答案 0 :(得分:4)

您应该在项目中使用manage.py而不是django-admin.py

python manage.py makemigrations

您无需将数据库名称传递给makemigrations。但是,您确实需要在迁移时单独迁移每个数据库。

python manage.py migrate --database=db1