Django错误 OperationalError: no such column: xxx

Posted delav

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django错误 OperationalError: no such column: xxx相关的知识,希望对你有一定的参考价值。

模型前后操作如下:

第一次迁移:

class Snippet(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=100, blank=True, default=‘‘)
    code = models.TextField()
    linenos = models.BooleanField(default=True)
    language = models.CharField(choices=LANGUAGE_CHOICES, default=python, max_length=100)
    style = models.CharField(choices=STYLE_CHOICES, default=friendly, max_length=100)

更改后:

class Snippet(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=100, blank=True, default=‘‘)
    code = models.TextField()
    linenos = models.BooleanField(default=True)
    language = models.CharField(choices=LANGUAGE_CHOICES, default=python, max_length=100)
    style = models.CharField(choices=STYLE_CHOICES, default=friendly, max_length=100)
    owner = models.ForeignKey(auth.User, related_name=snippets, on_delete=models.CASCADE)
    highlighted = models.TextField()

 

Djnago修改数据库分以下三步:

1、对models.py进行更改(正常)

2、使用makemigrations创建迁移

3、使用migrate执行迁移

分析:在该修改后模型后,第二次同步数据库时code和highlighted字段不能为空。如果第一次就创建highlighted字段,则无影响,因为该表没有现有的行。如果数据表第一次已经创建并且已经在表插入数据,则必须定义一个默认值来填充已有的行, 否则数据库会因为违反数据的完整性而不接受数据表更改。

技术分享图片

解决方法:改为

code = models.TextField(default =‘‘)

highlighted = models.TextField(default =‘‘)

 

以上是关于Django错误 OperationalError: no such column: xxx的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Django 中的以下错误:“OperationalError:外键不匹配”

使用 PostgreSQL 9.5 在 Django 1.9 中执行“python manage.py migrate”时出现错误“django.db.utils.OperationalError”

尝试在 Django 1.9 中迁移——奇怪的 SQL 错误 "django.db.utils.OperationalError: near ")": syntax er

Django错误 OperationalError: no such column: xxx

Docker- django 在连接到 postgres 时抛出错误:psycopg2.OperationalError:无法连接到服务器:连接被拒绝

django.db.utils.OperationalError: (1046, '未选择数据库')