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:无法连接到服务器:连接被拒绝