我正在尝试将django应用程序连接到需要检索一些数据的第三个数据库。我将以只读方式使用此数据表。 我已经进行了以下配置:
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'xxx',
'USER':'xxx',
'PASSWORD':'xxx',
'HOST':'xxx',
'PORT':'5432',
},
'histo':{
'ENGINE':'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR,'db.sqlite3'),
},
'redshift': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'xxx',
'USER':'xxx',
'PASSWORD':'xxx',
'HOST':'xxx',
'PORT':'5439',
}
}
DATABASE_ROUTERS = ['livedb.database_routers.redshiftrouter.Router']
并写了这个路由器:
redshiftrouter.py
class Router(object):
def db_for_read(self, model, **hints):
if model._meta.app_label == 'redshift':
return 'redshift'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'redshift':
return 'redshift'
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'redshift' or \
obj2._meta.app_label == 'redshift':
return True
return None
def allow_migrate(self, db, app_label, model=None, **hints):
if app_label == 'redshift':
return False
return None
我的问题是,我在运行manage.py migrate --database=redshift
时遇到了
migrationsschemamissing例外
因为 django_migrations.id 具有不受支持的类型“串行” 。 但是,我认为,由于有了路由器,我避免了在该数据库上进行迁移。
我读到另一篇文章是关于同一主题的,但是没有一个人对此问题给出答案。
您能帮我解决这个问题吗?
谢谢