Django South迁移到不同数据库

14

南方公司是否支持数据库路由?我设置了路由,将某些应用程序路由到一个数据库,而所有其他应用程序则路由到默认数据库。我甚至确保South的migrationhistory表在两个数据库中都存在。但是我无法让South仅在适当的数据库应用迁移。例如,即使我使用--database运行south,它也会将所有迁移应用于我指定的数据库,而不仅仅是该应用程序应该进入的数据库的迁移。

求助!谢谢。


3
请看这里:http://south.aeracode.org/ticket/370。 - benjaoming
顺便问一下,“manage.py migrate appname --database dbname” 不起作用吗? - benjaoming
1
manage.py migrate app --database db 可以工作,但是你不能使用 manage.migrate --database db 命令,让正确的迁移数据到正确的数据库。 - Overclocked
链接 south.aeracode.org/ticket/370 已经失效,因为 South 已被 Django 自带的迁移工具所取代。 - Mike Stoddart
1个回答

10

"South是否支持数据库路由?" 不支持。

问题在于Django的DB路由器基于应用程序/模型来路由查询到数据库,而south是基于表格的。South实际上并不知道一个表格对应哪个模型(尤其是在历史记录中)。Andrew Godwin目前正在开发django的contrib模块来替代south并解决许多这些问题,但现在你需要使用hacky方法(--database.using())手动完成大部分工作。

为了自动化,请建立所有表格存在于所有数据库中,并针对所有这些数据库运行所有迁移,以确保所有约束在所有数据库中都能一致地工作。


1
如果这个答案对您有帮助或提供了信息,您是否考虑将其标记为正确的答案? - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接