【问题标题】:IntegrityError: Not Null constraint failedIntegrityError:Not Null 约束失败
【发布时间】:2017-07-04 14:18:47
【问题描述】:

我已经从 model.py 中删除了一个类,但是每当我运行 python manage.py migrate 时,我都会得到这个:

完整性错误:非空约束失败:appname_modelclassfieldname.user_id

最具挑战性的是我已经删除了相关字段django is pointing error at的模型类。

【问题讨论】:

  • 如果它是一个测试数据库并且您不需要任何数据,那么删除迁移、删除数据库并重新开始可能是最简单的。如果数据库中有重要数据,那么您需要在问题中提供更多信息,包括完整的回溯、模型和失败的迁移。
  • 您是否在迁移中加载固定装置?因为这也可能是由不适用于您当前模型约束的固定装置引起的。当您保存具有user 字段的模型并且您尚未设置或将其重置为None(或尚未保存分配的user)时,会发生此错误。
  • 添加migrate的相关堆栈跟踪(详细)和错误指向的迁移文件可能会有所帮助。

标签: django


【解决方案1】:

您必须在运行 migrate 之前创建迁移。由于您尚未指定您的 Django 版本,因此您需要为最新版本 (1.11) 执行以下操作,该版本也至少可以工作到 1.9:

$ ./manage.py makemigrations # > creates a migration file
$ ./manage.py migrate

您可以根据需要在makemigrations 调用中指定应用程序。

关于:

最具挑战性的是我已经删除了相关字段django is pointing error at 的模型类。

为您自己的健康使用版本系统(例如 GIT)或支持本地版本控制的编辑器(例如 PyCharm) - 最好同时使用两者 - 即使您独自工作。 (您永远不会孤单,几周后,代码看起来像是由其他人编写的......)

【讨论】:

  • 我做了所有这些 makemigrations app_name ,仍然不明白为什么我在迁移时收到错误。
【解决方案2】:

问题是服务器出错。我删除了应用程序并创建了一个新应用程序,现在一切正常

【讨论】:

  • 您不需要完全删除应用程序,只需删除创建模型实例的应用程序下的迁移文件即可。
猜你喜欢
  • 2019-03-02
  • 2016-09-09
  • 2019-07-10
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 2022-12-10
  • 2018-08-24
  • 2022-01-19
相关资源
最近更新 更多