1. 程式人生 > >Django錯誤 OperationalError: no such column: xxx

Django錯誤 OperationalError: no such column: xxx

line django span .text reat 二次 code itl related

模型前後操作如下:

第一次遷移:

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