django error: django.db.utils.IntegrityError: NOT NULL constraint failed


 

用了一段時間的 python 的 django 框架,在修改 sqlite 數據庫的時候遇到如下錯誤:django.db.utils.IntegrityError: NOT NULL constraint failed: new__ImageRecognition_answercx.user_id

其中 ImageRecognition 是 app 的名稱。這個錯誤是發生在我在 ImageRecognition 項目下的 models.py 中的 AnswerCX 函數中使用添加了 user 字段,而這個字段是之前存在后來又被我刪除了,現在想要重新添加的,我的添加語法是: user = models.ForeignKey(User, on_delete=models.CASCADE) ,但是結果就報錯了,后來看了很多資料,就算修改成 user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, default=None) 也是報錯,后來終於找到了解決方案,分享給大家。

參考資料:https://stackoverflow.com/questions/42733221/django-db-utils-integrityerror-not-null-constraint-failed-products-product-ima

 

第一步,到當前 app 所在的文件夾下,我的 app 名字 ImageRecognition,然后找到 migrations 文件,找到前綴是 000 開頭的文件,從你出錯的地方開始刪除文件。我看了下這個 app 下數據庫的變化都存在這里,所以實在不懂操作,可以適當刪除到你開始出錯的地方。

  

 第二步:刪除后再次運行以下兩條語句

python3 manage.py makemigrations

python3 manage.py migrate
 
這時候如果兩句都運行通過了,就說明已經成功啦。
 
(可選): 如果你的錯誤和我類似,那么你就把原來添加的 
user = models.ForeignKey(User, on_delete=models.CASCADE)
的語句修改成
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, default=None)
這時候添加就可以成功添加 user 字段啦~
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM