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 ='')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM