django south 在多个数据库上
Posted
技术标签:
【中文标题】django south 在多个数据库上【英文标题】:django south on multiple databases 【发布时间】:2013-03-25 06:20:13 【问题描述】:我为我的 django 项目使用了两个环境,开发和生产。我主要从事开发工作,当我更改模型中的字段时,我使用南迁移到新模型。
我不明白现在如何将其传输到我的生产数据库?我正在做的是将我的代码提交到 SVN 并在生产中更新,然后尝试迁移。
我应该提交我的迁移目录和文件吗?还是我不应该?尝试在我的生产机器上迁移时似乎总是失败。
编辑: 我做了额外的测试。我已经清除了我的南历史表并删除了所有迁移目录。
现在我在本地环境中运行:python manage.py convert_to_south app_name
一切似乎都很完美。我现在向我的模型添加了一个附加字段并运行:python manage.py schemamigration app_name --auto
新字段已按预期迁移到我的数据库中。现在,我使用 .py 文件提交了我的迁移文件夹(包含 0001-initial 和 0002 用于我的新字段)
在我的开发环境中,我更新了包含迁移文件的树。我运行 python manage.py syncdb。 south_migrationhistory 表已创建,但 enpty。
现在我运行 python manage.py schemamigration app_name --auto 并得到: “似乎什么都没有改变。”
south_migrationhistroy 仍然是空的.....我不知道我在这里做错了什么
【问题讨论】:
正确的方法是将所有迁移文件包含在 svn 中,在生产环境上进行 svn 更新并运行迁移。是你在做什么吗?如果是这样,请详细说明究竟是什么失败了。 如果我这样做,它只会说“没有什么可更新的” 您使用的是两个分离良好的不同数据库吗?通常 South 应该检测上次应用的迁移是什么,然后运行新的迁移(感谢 south_migrationhistory 表)... 【参考方案1】:您应该提交您的迁移目录和文件。当您执行 svn 更新时,South 现在知道如何处理您的新迁移。
South 查找名为 south_migrationhistory
的数据库表以查看已应用哪些迁移,并基于此应用迁移文件夹中指定的新迁移。如果您不签入新的迁移文件,它将始终以“无新更新”结束。
【讨论】:
如果我这样做,它只会说“没有什么可更新的”并且不会进行任何迁移。 只需检查您的south_migrationhistory
表,看看是否已应用迁移
或者,您是否有防止写入其中一个数据库的路由器设置?以上是关于django south 在多个数据库上的主要内容,如果未能解决你的问题,请参考以下文章
使用 South 在 Heroku 上设置 Django 时遇到问题 - 不断出现 ProgrammingError:关系不存在
South - 将 django 应用程序从 sqlite 迁移到 mysql