syncdb 和 migrate 有啥区别?
Posted
技术标签:
【中文标题】syncdb 和 migrate 有啥区别?【英文标题】:What is the difference between syncdb and migrate?syncdb 和 migrate 有什么区别? 【发布时间】:2014-02-19 13:51:58 【问题描述】:我正在浏览 django 文档。在这里我有一个情况。在其中一份文档中,有人告诉我这样做
python manage.py migrate
在另一个方面
python manage.py syncdb
我不能做第一个(错误:找不到迁移命令。)但第二个对我来说很好。这是版本问题还是我需要处理其他问题。
【问题讨论】:
你能分享你正在谈论的文档链接吗? docs.djangoproject.com/en/1.6/intro/tutorial01 【参考方案1】:migrate
命令是即将发布的 Django 1.7 中的新命令,尚未发布。
对于早期版本,您可以使用syncdb
,或外部应用程序South。
阅读文档时,请使用文档版本切换器选择正确的版本。
例如,当前的1.6 Tutorial 使用syncdb
,但dev tutorial(为即将发布的1.7 编写)使用migrate
。
【讨论】:
谢谢!!我花时间在那上面。你能告诉我一些关于南方的事情吗? virtualenv中的“pip install south”会得到包吗?? 是的,我尝试通过执行“pip install django==1.7”来安装最新版本..我不能这样做..你也能解释一下吗?? south docs 比我在这里写的任何评论都好。如果您遇到困难,请再问一个问题。 django 1.7 尚未发布。它正在开发中。您可以安装它,但我不推荐它,因为它不如 1.6 稳定并且可能会发生变化。pip install South
无论如何都会为您提供 South (0.8.4) 的最新稳定版本,因此您无需指定版本【参考方案2】:
命令 migrate
属于名为 south (http://south.aeracode.org/) 的应用程序。
来自网站:
这是面向 Django 项目的南方智能架构和数据迁移。
在 Django==1.7 之前,您必须安装第三方应用程序才能执行数据库迁移。
请参阅readthedocs 的文档
【讨论】:
【参考方案3】:这取决于您正在阅读的文档版本。 migrate
是来自 South 的命令,直到 django 的最新(当前开发或开发)版本是一个单独的应用程序。它终于集成到了 Django 中(基本上每个 django 项目都会使用它,这是理所当然的,所以值得一读)。
在 django 文档页面的右下角有一个选择器,您可以在其中切换不同版本的 Django,因此如果您正在为您的项目寻找信息,最好更改为您的 Django 版本'目前正在使用。
【讨论】:
以上是关于syncdb 和 migrate 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
Django 1.8 - migrate 和 makemigrations 有啥区别?
执行python manage.py syncdb,报Unknown command: 'syncdb'
执行python manage.py syncdb,报Unknown command: 'syncdb'
DJango数据库报错 python manage.py syncdb