如何成功地将第二个数据库与Django South集成?

时间:2012-03-28 18:32:21

标签: django data-migration django-south geodjango

我们的一个客户需要向他们添加一些地理位置数据 现场。由于他们已经拥有没有GIS扩展的数据库设置, 我决定创建一个新的数据库(带有GIS扩展),我 打算用于仅存储地理位置数据。

在某些时候,我已经开始为我的发展做好准备 机器(意思是,我有这些新模型的迁移)。但是现在已经编写了代码,我导入了一个数据库转储 直接从服务器上让我的开发机器完全正确 镜像生产机器,现在我似乎无法得到南方 正确应用迁移。南方似乎有几个特点 它允许多个数据库,但到目前为止它们都没有。

我尝试了什么:

  1. 只需添加模型并进行迁移即可。这给了我以下内容 错误:

    AttributeError: 'DatabaseOperations' object has no attribute
    'geo_db_type'
    

    好的,所以South正在尝试在原始数据库上创建模型 它没有GIS扩展。

  2. 添加模型,但指定要迁移的“geo”数据库 'geo'应用程序。这给了我以下错误:

    django.db.utils.DatabaseError: relation "south_migrationhistory"
    does not exist
    

    我猜南方希望它的MigrationHistory表存在于'geo'上 数据库也是?

  3. 允许南方的模型存在于我的“地理”数据库中。

    $ python manage.py syncdb --database=geo
    $ python manage.py migrate
    

    这给了我以下错误:

    django.db.utils.DatabaseError: relation "<model>" already exists
    

    我猜这是因为我已经存储了MigrationHistories 在另一个数据库中?

  4. South显然有一个名为'dbs'的稀疏记录功能 (看到: http://south.aeracode.org/docs/databaseapi.html#accessing-the-api) 所以我尝试了前三种方法,再次替换了所有实例 “db”with“dbs ['geo']”。

    一个。迁移运行顺利,但实际上并不创建任何表 在我的'geo'数据库中。

    湾与不使用'dbs'功能时相同的错误。

    ℃。与不使用'dbs'功能时相同的错误。

  5. 整个过程非常令人沮丧。有人有 使用South时,多个数据库支持是否正常运行?

1 个答案:

答案 0 :(得分:2)

每当我修改表格模型时,我使用南方和这些命令来修改结构,它们总是有效:

python manage.py convert_to_south "your_app"
python manage.py migrate "your_app"

我建议在运行 syncdb 后运行这些命令,以便创建表格。