我们的一个客户需要向他们添加一些地理位置数据 现场。由于他们已经拥有没有GIS扩展的数据库设置, 我决定创建一个新的数据库(带有GIS扩展),我 打算用于仅存储地理位置数据。
在某些时候,我已经开始为我的发展做好准备 机器(意思是,我有这些新模型的迁移)。但是现在已经编写了代码,我导入了一个数据库转储 直接从服务器上让我的开发机器完全正确 镜像生产机器,现在我似乎无法得到南方 正确应用迁移。南方似乎有几个特点 它允许多个数据库,但到目前为止它们都没有。
我尝试了什么:
只需添加模型并进行迁移即可。这给了我以下内容 错误:
AttributeError: 'DatabaseOperations' object has no attribute
'geo_db_type'
好的,所以South正在尝试在原始数据库上创建模型 它没有GIS扩展。
添加模型,但指定要迁移的“geo”数据库 'geo'应用程序。这给了我以下错误:
django.db.utils.DatabaseError: relation "south_migrationhistory"
does not exist
我猜南方希望它的MigrationHistory表存在于'geo'上 数据库也是?
允许南方的模型存在于我的“地理”数据库中。
$ python manage.py syncdb --database=geo
$ python manage.py migrate
这给了我以下错误:
django.db.utils.DatabaseError: relation "<model>" already exists
我猜这是因为我已经存储了MigrationHistories 在另一个数据库中?
South显然有一个名为'dbs'的稀疏记录功能 (看到: http://south.aeracode.org/docs/databaseapi.html#accessing-the-api) 所以我尝试了前三种方法,再次替换了所有实例 “db”with“dbs ['geo']”。
一个。迁移运行顺利,但实际上并不创建任何表 在我的'geo'数据库中。
湾与不使用'dbs'功能时相同的错误。
℃。与不使用'dbs'功能时相同的错误。
整个过程非常令人沮丧。有人有 使用South时,多个数据库支持是否正常运行?
答案 0 :(得分:2)
每当我修改表格模型时,我使用南方和这些命令来修改结构,它们总是有效:
python manage.py convert_to_south "your_app"
python manage.py migrate "your_app"
我建议在运行 syncdb 后运行这些命令,以便创建表格。