1

我想使用南来管理使用 mercurial 的开发和生产中的数据库更改。但是我不知道该怎么办!

假设我有一个根本不使用南的项目。它在生产和开发中与 mercurial 同步。一切正常!

现在,有一天我想对应用程序测试的模型进行更改。所以,我在我的开发环境中是

1. python manage.py convert_to_south 测试
2. python manage.py 迁移

现在我改变模型然后

3. python manage.py schemamigration test --auto
4. python manage.py 迁移

现在我把一切都交给善变

5.hg 删除
6. hg commit -m "向南转换并改变了东西"
7.hg推生产

在 uat 中一切似乎都运行良好,但是我无法让它在生产中运行:(

所以我认为正确的工作流程是登录生产并应用更改

1. 汞更新

然后只是迁移应用程序

2. python manage.py 迁移

但这不起作用,我收到一个奇怪的“test_table”错误已经存在(出于某种原因,南方想再次装箱)。另外,我在这里阅读了将 South 添加到 Django 项目、开发和生产中,我应该在进行迁移之前执行 python manage.py migrate test --fake 0001 - 但这也没有用(我收到一个缺少表的错误或类似的东西)。

所以 ?我应该怎么办 ?将迁移应用于开发和环境的正确方法是什么?我是否应该将我的应用程序的 /migrations/ 目录从 mercurial 中移除并运行

python manage.py convert_to_south 测试
和
python manage.py schemamigration test --auto

开发和生产?

4

1 回答 1

4

convert_to_south只是两个链接在一起的命令:schemamigration --init+ migrate --fake. 因此init,只需像往常一样创建迁移,并fake确保您不需要手动应用迁移。但是您的服务器会进行迁移,而不是创建它,因此您确实需要运行manage.py migrate test 0001 --fake它并且它应该可以工作。syncdb可能是你安装后没有运行,south所以服务器数据库没有south表。

所以,运行:

manage.py syncdb
manage.py migrate test 0001 --fake
于 2012-05-13T05:19:01.803 回答