首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django -部署syncdb & South

Django -部署syncdb & South
EN

Stack Overflow用户
提问于 2013-06-15 08:38:08
回答 2查看 729关注 0票数 2

我正在一个新的开发环境上部署一个项目。

当我使用南方的时候,我做到了:

代码语言:javascript
复制
$ python manage.py syncdb --all
$ python manage.py migrate --fake

我使用syncdb --all来应用模型的实际状态。

然后migrate --fake将所有模型标记为迁移的模型。

但在那之后,我的模型不在最后一个版本(缺失字段)上。

我做错什么了?

我想我所有的修改都是迁移的。

如果我做了

代码语言:javascript
复制
$ python manage.py syncdb

它似乎创建了自我使用South (这是预期的)以来的第一个状态。

但是后来

代码语言:javascript
复制
$ python manage.py migrate

有些表显示为已创建的表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-28 10:28:52

实际上,对我的案子来说应该没问题

代码语言:javascript
复制
$ python manage.py syncdb --all
$ python manage.py migrate --fake

最近我不得不重新部署我的应用程序,我也面临着同样的问题。

我刚刚意识到,在导致这个问题的模型上,我进行了双初始迁移。

代码语言:javascript
复制
0001_initial.py
0002_initial.py
0003_auto__add_field_mytable_myfield.py

我只是删除并重命名了

代码语言:javascript
复制
0001_initial.py
0002_auto__add_field_mytable_myfield.py

然后重新部署整个数据库(显然不要忘记更新我的其他主机上已经应用的迁移)

票数 2
EN

Stack Overflow用户

发布于 2013-06-15 12:23:13

--fake选项在尝试创建新迁移时不会避免错误。它记录迁移应用了而不实际应用它们。

此外,您还需要--ignore-ghost-migrations--delete-ghost-migrations来实现您想要的目标。

要将现有项目转换为south,首先需要使用转换应用程序

现在,如果您已经运行了--fake,要恢复,可以这样做:

  • 转到./manage.py dbshell
  • 从south_migrationhistory中删除id > 0;//注意,这将删除表中的everything

如果您想删除特定应用程序的迁移,

代码语言:javascript
复制
DELETE FROM south_migrationhistory WHERE app_name = 'blah'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17121737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档