簡體   English   中英

遷移后的Django-cms 1.7.10“ OperationalError-無此類列”

[英]Django-cms 1.7.10 “OperationalError - no such column” after migration

因此,我知道更改模型然后無法將遷移應用於他們的數據庫的人們已經有很多問題。 但是,就我而言,我知道已經應用了遷移,因為我可以看到新的表數據。

基本上,我安裝了django-cms,然后在djangocms_column插件的models.py添加了一個字段,以允許我在自己的列中添加Bootstrap類名稱(例如col-md-4col-md-6等)。 。

if hasattr(settings, "COLUMN_CLASS_CHOICES"):
    CLASS_CHOICES = settings.COLUMN_CLASS_CHOICES
else:
    CLASS_CHOICES = (
        ('col-md-1', _("col-md-1")),
        ('col-md-2', _("col-md-2")),
        ('col-md-3', _('col-md-3')),
        ('col-md-4', _("col-md-4")),
        ('col-md-5', _('col-md-5')),
        ('col-md-6', _("col-md-6")),
        ('col-md-7', _('col-md-7')),
        ('col-md-8', _('col-md-8')),
        ('col-md-9', _('col-md-9')),
        ('col-md-10', _('col-md-10')),
        ('col-md-11', _('col-md-11')),
        ('col-md-12', _('col-md-12')),
        ('', _('none')),
    )

...

@python_2_unicode_compatible
class Column(CMSPlugin):
    """
    A Column for the MultiColumns Plugin
    """

    width = models.CharField(_("width"), choices=WIDTH_CHOICES, default=WIDTH_CHOICES[0][0], max_length=50)

    """
    This is the new field:
    """
    bs_class = models.CharField(_("bs_class"), choices=CLASS_CHOICES, default=CLASS_CHOICES[0][0], max_length=50)

    def __str__(self):
        return u"%s" % self.get_width_display()

然后我跑./manage.py makemigrations然后./manage.py migrate ,現在的表看起來像這樣:

sqlite> select * from djangocms_column_column;
cmsplugin_ptr_id  bs_class    width     
----------------  ----------  ----------
3                 col-md-1    33%       
5                 col-md-1    33%       
7                 col-md-1    33%       
19                col-md-1    33%       
21                col-md-1    33%       
23                col-md-1    33% 

但是,當我嘗試訪問測試服務器時,仍然出現以下錯誤:

OperationalError at /en/
no such column: djangocms_column_column.bs_class
Request Method: GET
Request URL:    http://localhost:8000/en/
Django Version: 1.7.10
Exception Type: OperationalError
Exception Value:    
no such column: djangocms_column_column.bs_class

而且,是的,我嘗試刪除數據庫並運行./manage.py migrate ,但是該站點仍然顯示相同的錯誤。 必須使用一種特殊的遷移過程來修改./env/lib/python2.7/site-packages文件夾中安裝的插件嗎?

因此,我實際上已經弄清楚了造成這種現象的原因。 在設計gulp任務時,我重新構造了項目文件夾,將所有django創建的文件都放在src子目錄中。

我這樣做的bower_components是,在修改gulpfile.jsbower_components中的文件時,以這種方式監視應用程序文件中的更改會更容易,而不會無意間觸發監視任務。 (最終,這沒關系,因為我的問題不只是django項目根目錄而已。)

除了settings.DATABASES['default']['NAME']是相對路徑project.db之外,這不是問題。 結果,當我從/src目錄中運行./manage.py migrate時,它在/src/project.db上執行了遷移。 當我從父目錄運行src/manage.py migrate ,遷移是在/project.db/project.db djangocms應用程序本身正在使用后者,而我一直在前者上執行所有遷移。

因此,這里的課程是:

  • 確保使用絕對路徑指定了sqlite文件。
  • 當您遇到看似莫名其妙的遷移問題時,請檢查以確保您的工作空間中沒有多個浮動的.db文件。

您是否嘗試過刪除應用程序內遷移文件夾中的遷移?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM