【Django】清除数据库 | 解决Django makemigrations时的NodeNotFoundError

因为更改了一些数据库模型,涉及到ForeignKey以及级联删除的问题,不想麻烦了想直接清空数据库从头建库。
删库之前可以使用py manage.py dumpdata导出数据库中所有数据,之后再用loaddata加载数据。

  • py manage.py dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]:app_label就是自己在app.py里设置的label名,输入命令后回车,在终端上就会显示数据。好像不能直接让它输出到一个指定文件里。
  • py manage.py loaddata 数据文件路径

问题出现

直接把整个数据库删了,把每个app下的migrations文件夹下文件全部删除,只保留__init__.py
然后进行makemigrations操作,报错django.db.migrations.exceptions.NodeNotFoundError: Migration admin.0004_auto_20210423_1703 dependencies reference nonexistent parent node(‘cms_user’, '0001_initial')

问题解决

不是很清楚原因,网上找了一些答案,大概意思是django会有缓存什么之类没删干净?需要卸载django
一个个人认为比较全面的解决方案:django.db.migrations.exceptions.NodeNotFoundError

我自己的解决方案:
当我用pip卸载django时,它会先提示你将要删掉某些文件,是否确定继续操作。在这些文件中,有一个比较特别Would not remove(might be manually added): e:\....\'envcmsserver\lib\site-packages\django\contrib\admin\migrations\0004_auto_202104231203.py
我一看这不就是之前报错指示的那个文件?把它删了,在进行makemigrations就可以陈宫操作了

又出现了类似的问题,但这次报错是一个不同的带日期和数字编码的文件。想再卸载一下django但这次并没有出现类似的文件提示。所以直接在虚拟环境目录下查找那个报错的文件名,找到两个,删除即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值