Django 迁移未应用于数据库

问题描述 投票:0回答:2

我有一个 Django2.2.3 应用程序,它运行良好。但我必须更改表中字段的名称,并添加另一个字段。然后我就跑了

./manage.py makemigrations && ./manage.py migrate
。除了终端提示:

Running migrations:
  No migrations to apply.

没有抛出错误。但是当我去MySQLWorkbench检查数据库时,它就像我没有做任何更改一样。我尝试删除迁移并再次进行,该过程结束时没有错误,但数据库没有更改。我创建另一个空数据库,更改 settings.py 上的名称并进行迁移并再次迁移,它起作用了,但是当我将旧数据库名称放在设置上时,它不起作用。

有人可以为我解释一下这种行为吗?这些信息迁移有什么缓存之类的吗?我真的很想知道为什么这不是我想象的那样 winrkig。

python mysql django migration
2个回答
0
投票

确保具有迁移的应用程序位于 INSTALLED_APPS 中。否则 Django 不会查看应用程序的更改。


0
投票

向现有模型(表)添加新的几个字段是导致此问题的原因之一。解决这个问题的方法如下: 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。

© www.soinside.com 2019 - 2024. All rights reserved.