【问题标题】:OperationalError: (1054, "Unknown column 'example.example_field' in 'field list'")OperationalError:(1054,“'字段列表'中的未知列'example.example_field'”)
【发布时间】:2017-06-16 05:59:11
【问题描述】:

我的Example 模型曾经有一个十进制字段example_field 定义为:

sample_field = models.DecimalField(decimal_places=1, max_digits=3, blank=True, null=True)

我决定从Example 模型以及我使用example_object.example_field 的代码中的任何地方删除此字段。在makemigrationsmigrate 之后,一切正常,我向远程分支发出了拉取请求。

然后我切换到另一个本地分支并得到这个错误:

OperationalError: (1054, "Unknown column 'example.example_field' in 'field list'")

这是有道理的,因为这个分支仍然使用example_object.example_field。但是,在远程分支接受了拉取请求之后。从远程分支拉出后,我仍然遇到同样的错误。

接受 PR 后,远程分支部署在 AWS 上。两个实例之一工作正常,但另一个具有相同的OperationalError

【问题讨论】:

  • 请将完整的堆栈跟踪发布到您的错误中。

标签: django amazon-web-services django-models mysql-python


【解决方案1】:

在任何一种情况下(AWS 或本地分支),第一步都是确保您更新的代码实际上已正确部署在实例上。

  1. 导航到您的项目

    cd /path/to/django/project
    
  2. 检查文件中的Example类定义:

    grep -A20 'class Example\(' models.py
    
  3. 确认您的字段实际上已从两个实例或本地分支的代码中删除。

  4. 在您的项目中进行全局搜索以使用example_field

    cd /path/to/django/project
    find . -name '*.py' | xargs grep -Ri example_field 
    
  5. 删除所有 pyc 文件并重新启动您的应用服务器:

    cd /path/to/django/project
    find . -name '*.pyc' -delete
    

【讨论】:

  • 非常感谢!它完全有效!应用grep -A20 'class Example' models.pyfind . -name '*.py' | xargs grep -Ri example_field 后,我发现repo 没有适当更新。
猜你喜欢
  • 2016-09-29
  • 1970-01-01
  • 2013-12-10
  • 2016-04-05
  • 1970-01-01
  • 2020-10-27
  • 2018-10-21
  • 1970-01-01
  • 2021-01-26
相关资源
最近更新 更多