看看这个:
$ pypy ./manage.py syncdb
/usr/lib64/pypy-2.4.0/site-packages/django/core/management/commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9
warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)
(cut)
我跑了quick google search,但找不到答案 - 我应该使用什么代替syncdb
?
答案 0 :(得分:84)
syncdb
因“{3}}引入the migration system而被弃用。
现在,您可以使用makemigrations
跟踪您的更改。这会将您的模型更改转换为python代码,以使它们可以部署到另一个数据库。如果需要进一步修改,则需要使用django 1.7。
创建迁移后,您必须应用:migrate
。
因此,您应该使用syncdb
然后使用makemigrations
而不是migrate
。
在模型中更改了某些内容之后的开发工作流程:
./manage.py makemigrations
./manage.py migrate
在你的生产系统上:
./manage.py migrate
奖励:您不需要为每次更改运行migrate
。如果您还没有应用多个更改,那么django会以正确的顺序为您运行它们。
答案 1 :(得分:46)
你绝对应该使用migration system。这使您可以跟踪extern
中的更改,并为数据库创建迁移。迁移系统使用命令makemigrations
创建迁移,使用migrate
迁移数据库。
如果由于某种原因你需要以models.py
的方式创建数据库,那么会有一个命令标志使syncdb
以相同的方式工作。只有当真的需要它并且您知道自己在做什么时,才应该这样做。例如,为您选择的持续集成系统创建一个空数据库。
migrate
在Django 1.9.1上测试。
答案 2 :(得分:7)
您应该使用django 1.7中引入的makemigrations
和migrate
命令
答案 3 :(得分:2)
syncdb
有一些db迁移问题。所以,在引入django 1.7 makemigrations
和migrate
之后。
现在在django 1.9 syncdb
已被弃用。
尝试
1. python manage.py makemigrations
检测db中的更改并在迁移文件夹内创建一个.py
文件
2. python manage.py migrate
将迁移应用于数据库