我有一个 Django2.2.3 应用程序,它运行良好。但我必须更改表中字段的名称,并添加另一个字段。然后我就跑了
./manage.py makemigrations && ./manage.py migrate
。除了终端提示:
Running migrations:
No migrations to apply.
没有抛出错误。但是当我去MySQLWorkbench检查数据库时,它就像我没有做任何更改一样。我尝试删除迁移并再次进行,该过程结束时没有错误,但数据库没有更改。我创建另一个空数据库,更改 settings.py 上的名称并进行迁移并再次迁移,它起作用了,但是当我将旧数据库名称放在设置上时,它不起作用。
有人可以为我解释一下这种行为吗?这些信息迁移有什么缓存之类的吗?我真的很想知道为什么这不是我想象的那样 winrkig。
确保具有迁移的应用程序位于 INSTALLED_APPS 中。否则 Django 不会查看应用程序的更改。
向现有模型(表)添加新的几个字段是导致此问题的原因之一。解决这个问题的方法如下: a) 取消应用该应用程序的迁移:
python3 manage.py migrate --fake <app-name> zero
b) 迁移所需的迁移(您已经删除了以前的迁移,并且已经为新添加的列执行了“makemigrations”。因此,您只需迁移:
python3 manage.py migrate <app-name>
如果上述步骤没有解决问题,请先删除该表:
小心,如果数据库中有任何数据,它们也会丢失!!
i) python3 manage.py dbshell
ii) DROP TABLE appname_tablename
关闭外壳并再次重复a和b。