未找到迁移数据,但Django和South中表未更新
我正在更新我的应用程序,想要添加一个管理页面,所以我运行了syncdb命令:
tyre77$ python manage.py syncdb
Syncing...
Creating tables ...
Installing custom SQL ...
Installing indexes ...
No fixtures found.
Synced:
> django.contrib.auth
> django.contrib.contenttypes
> django.contrib.sessions
> django.contrib.sites
> django.contrib.messages
> django.contrib.staticfiles
> south
> django.contrib.admin
Not synced (use migrations):
- OmniCloud_App
(use ./manage.py migrate to migrate these)
这没问题!South这个工具已经安装好了,所以我们只需要进行一些迁移操作:
tyre77$ python manage.py migrate
Running migrations for OmniCloud_App:
- Nothing to migrate.
- Loading initial data for OmniCloud_App.
No fixtures found
等等,什么情况?你刚才让我进行迁移,我照做了,但找不到任何数据文件,所以应用程序还是没有同步好!
1 个回答
2
“没有找到数据文件。”这个问题和South没有关系。South只是尝试在完成数据库结构和数据的迁移后重新加载数据文件。从你的输出信息来看,你的迁移已经是最新的了。
在这种情况下,它正在寻找的数据文件是:initial_data.[xml/yaml/json]
。这个数据文件也是在你运行syncdb
时会加载的。
举个例子,当我尝试迁移我的应用时:
python manage.py migrate
Running migrations for home:
- Migrating forwards to 0001_initial.
> home:0001_initial
- Loading initial data for home.
No fixtures found.
不过,如果我提供initial_data.json
,在完成迁移后,它会加载这个数据文件。
使用South
根据你的问题,听起来你可能还没有为你的django应用生成任何迁移文件。你可以先运行以下命令:
python manage.py schemamigration OmniCloud_App --initial
这个命令会生成一个叫0001_initial.py
的文件。当你运行python manage.py migrate
时,它会对你的数据库执行这个迁移。