Django执行数据库迁移
- 导致原因:因为迁移文件和数据库中的迁移记录不一致
- 解决办法
python manage.py migrate app名 --fake 迁移文件名
将指定迁移文件标记为已经映射,这时将不会执行这个迁移文件的Sql语句。 - 如果不知道是那个迁移文件出现了问题,可以将这个app下面的所有迁移文件全部删除,然后将数据库中迁移文件表
django_migrations
中这个app的所有迁移文件全部删除,然后将表的字段和类映射对应清楚后使用python manage.py makemigrations app_name
生成一个迁移文件,然后使用python manage.py migrate --fake-initial
将第一个建表的迁移文件保存到数据库中。
根据数据库生成模型
- 命令
python manage.py inspectdb > 文件路径
- 需要修正下
- 名字,可能名字太长,或者会有关键字
- 模型需要放到相关的app当中
- 通过外键连接的表需要调整
- 执行标记命令