簡體   English   中英

Django makemigrations工作,遷移失敗“django.db.utils.IntegrityError:NOT NULL約束失敗”

[英]Django makemigrations works, migrate fails with “django.db.utils.IntegrityError: NOT NULL constraint failed”

我被卡住了。 Django 1.7,SQLite3。

我已經更改了我的模型以添加thumbnail列,如本教程中所示 就是這樣:

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    pub_date = models.DateTimeField('date published')
    likes = models.IntegerField(default=0)

    def __str__(self):
        return  self.title

現在是這樣的:

from django.db import models
from time import time         

def get_upload_file_name(instance, filename):
    return  "uploaded_files/%s_%s" % (str(time()).replace(".", "_"), filename)

class Article(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    pub_date = models.DateTimeField('date published')
    likes = models.IntegerField(default=0) 
    thumbnail = models.FileField(upload_to=get_upload_file_name, null=True)

    def __str__(self):
        return  self.title

我將所有數據備份到json文本文件中

python manage.py dumpdata article --indent=4 > article.json

然后執行

python manage.py makemigrations

哪個有效。

python manage.py migrate

失敗了

django.db.utils.IntegrityError: NOT NULL constraint failed: article_article__new.thumbnail

現在,即使在models.pythumbnail行中添加null=True ,運行makemigrations成功,並且migrate失敗的方式相同。

我該怎么辦?

我的應用程序名稱(使用python manage.py startapp創建)稱為articles 以下是多次獲取null-constraint錯誤后的新articles\\migrations文件夾:

__init__.py
0001_initial.py
0002_auto_20140803_1540.py
0003_auto_20140803_1542.py
0004_auto_20140803_1450.py
0005_auto_20140803_1552.py
__pycache__
   __init__.cpython-34.pyc
   0001_initial.cpython-34.pyc
   0002_auto_20140803_1540.cpython-34.pyc
   0003_auto_20140803_1542.cpython-34.pyc
   0004_auto_20140803_1450.cpython-34.pyc
   0005_auto_20140803_1552.cpython-34.pyc

我刪除了兩個目錄中除000之外的所有000 *文件。

然后我跑了

python manage.py makemigrations

python manage.py migrate

成功。

謝天謝地,感謝irc.freenode.net/django

只是添加另一個解決方案。

在我的情況下,我如何創建BASE_DIR是不正確的,因此DATABASES NAME也是錯誤的。 所以它是在其他地方創建數據庫。 當我運行遷移時,由於存在一些舊的數據庫,因此可以正確地拋出此錯誤。 所以修復只是糾正DATABASE路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM