Python Django makemigrations起作用,迁移失败,返回“0”;django.db.utils.IntegrityError:非空约束失败";
我卡住了。Django 1.7,SQLite3 我已经更改了模型,添加了Python Django makemigrations起作用,迁移失败,返回“0”;django.db.utils.IntegrityError:非空约束失败";,python,django,sqlite,Python,Django,Sqlite,我卡住了。Django 1.7,SQLite3 我已经更改了模型,添加了缩略图列,如中所示。是这样的: 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
缩略图
列,如中所示。是这样的:
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:非空约束失败:article\u article\u new.thumbnail
现在,即使将null=True
添加到models.py
中的缩略图
行中,运行makemigrations
也会成功,而migrate
也会以同样的方式失败
我该怎么办?我的应用程序名(使用python manage.py startapp
创建)被称为articles
。在多次获得空约束错误后,这里是新的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
我删除了两个目录中除0001之外的所有000*个文件
然后我跑了
python manage.py makemigrations
及
成功
谢天谢地,
irc.freenode.net/django
只是为了添加另一个解决方案
在我的例子中,我如何创建
BASE\u DIR
是不正确的,因此数据库名称
也是错误的。所以它是在另一个地方创建数据库的。当我运行迁移时,它很可能抛出了这个错误,因为那里存在一些旧数据库。因此,解决方法是只更正数据库的路径。我看不出这是如何回答这个问题的。这不是一个答案,而是“然后不要这样做并重新回滚”
python manage.py migrate