Django錯誤 OperationalError: no such column: xxx
阿新 • • 發佈:2018-09-15
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