搞懂Django的makemigrations和migrate

问题描述:

已有的model,修改之后,想重新建模,于是将migrations文件夹中除init.py之外其他文件都删掉,
再次执行以下步骤python manage.py makemigrations确认成功,执行python manage.py migrate,
提示No migrations to apply.

解决方式:

方式一:(一般就可以解决问题)

1、python manage.py migrate --fake #使用这条命令

方式二:(参考别人的方式)

1、python manage.py dbshell 进到数据库中,执行delete from django_migrations where app='your_appname';
2、python manage.py makemigrations(若migrations文件未删除,可不执行这一步)
3、python manage.py migrate 或 python manage.py migrate --fake

方式三:亲测有用

在django_migrations表中,migrate执行完后会自动添加最后一个。如,init0001。这是系统一个机制,防止重复执行。
即:makemigrations会生成一个migrations文件,执行migrate会执行里面的变更,并把这个执行记录放入到django_migrations表中

在django_migrations表中对应的项目删除即可。就可以重新执行。

你可能感兴趣的:(搞懂Django的makemigrations和migrate)