71

看看这个:

$ 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)

我跑了一个快速的谷歌搜索,但找不到答案 - 我应该使用什么来代替syncdb

4

4 回答 4

89

syncdb由于django 1.7引入的迁移系统而被弃用。

现在您可以使用makemigrations. 这会将您的模型更改转换为 python 代码,以使它们可部署到另一个数据库。当您需要对数据库进行进一步修改时,您可以使用数据迁移

创建迁移后,您必须应用它们:migrate.

因此,syncdb您应该使用makemigrations然后而不是使用migrate

更改模型中的某些内容后的开发工作流程:

./manage.py makemigrations
./manage.py migrate

在您的生产系统上:

./manage.py migrate

奖励:您不需要migrate为每次更改运行。如果您有多个尚未应用的更改,django 将以正确的顺序为您运行它们。

于 2015-04-16T19:03:32.413 回答
61

您绝对应该使用迁移系统。这使您可以跟踪您的更改models.py,并为数据库创建迁移。迁移系统使用命令makemigrations来创建迁移和migrate迁移数据库。

如果出于某种原因您需要以相同的方式创建数据库,syncdb那么有一个命令标志会导致migrate以相同的方式工作。只有当你真的需要它并且你知道你在做什么时,你才应该这样做。例如,为您选择的持续集成系统创建一个空数据库。

python manage.py migrate auth
# performs migrations for auth and contenttypes contrib apps

python manage.py migrate --run-syncdb
# creates the rest of the database

在 Django 1.9.1 上测试。

于 2016-01-06T14:48:06.813 回答
9

您应该使用django 1.7 中引入的makemigrationsand命令migrate

https://docs.djangoproject.com/en/1.7/topics/migrations/

于 2015-04-16T18:50:22.120 回答
3

syncdb数据库迁移有一些问题。所以,django 1.7 之后又陆续makemigrations推出migrate。现在在 django 1.9syncdb中已被弃用。尝试
1.python manage.py makemigrations检测 db 中的更改并.py在迁移文件夹中创建一个文件 2.python manage.py migrate将迁移应用到数据库

于 2016-06-29T09:17:28.600 回答