django.db.utils.InternalError 1054 Unknown column 不存在代码中

解决方法请直接看结尾!!!

我本来是觉得这个问题这么难解决,应该写个blog一遍解决一边记录下各种尝试过程,结果emmm。

我今天打算给一个点位(Point模型)添加照片(Photo模型,外键Point模型)的时候,输完p.photo_set.all()本来期待输出(毕竟照片还没有添加)遇到了一个特别奇怪的报错。

>>> from routes.models import Route, Point, Photo
>>> p = Point.objects.get(id=3)
>>> p

>>> p.photo_set.all()

django.db.utils.InternalError: (1054, "Unknown column 'routes_photo.photo_file' in 'field list'")

routes_photo是应用名_模型名,这个报错的意思是photo_file字段在数据库中不存在。

但是,问题是,这个photo_file在我的代码里也不存在啊!!!不信你看嘛!!!

pycharm中ctrl+shift+F全局搜索photo_有很多搜索结果(在模型Photo下定义了不少字段),但是没有定义photo_file。

django.db.utils.InternalError 1054 Unknown column 不存在代码中_第1张图片django.db.utils.InternalError 1054 Unknown column 不存在代码中_第2张图片

不过这个photo_file的确曾经存在的,我把photo_file改名为photo_url了。但问题是我已经更新迁移了啊,而且全局搜索也没有不是吗!也许迁移有什么问题,简单粗暴地删库删migration文件然后重新:

  • python manage.py makemigrations routes
  • python manage.py migrate

但是并没有什么用。搜了半天中文博客,里面都是和我完全不相关的问题,什么最前面有个空格啊,什么忘记migrate或者忘记makemigrations了,好不容易在博客园里面看到一个和我问题一样的,大家说了以上方法楼主表示都已经做过了以后,帖子就坑了。倒是看到几个比较靠谱的中文博客(点击链接),但是和我的方法是一样的,删光重建嘛。

不喜欢上Stack overflow的原因是,我遇到的问题一般都特别低级,我也不知道怎么描述,然后stac面的错误也高级,解决方法也高级,总是云里雾里然后在某个同为小白的csdn里面找到了答案。Stack里面搜了半天,搜到一个和我有类似问题的人(点击链接)。看红色框内,也是改了字段名然后报错说找不到原来的字段名(which 我俩也都没想用它啊)。

django.db.utils.InternalError 1054 Unknown column 不存在代码中_第3张图片

不过这位小哥不是和我一样修改模型然后生成迁移的,而是直接写了迁移文件。

解答区果然也抓住这点了,开始“delete-makemigrations-migrate三连”

我都做了这些啊可是没有用啊.jpg 

django.db.utils.InternalError 1054 Unknown column 不存在代码中_第4张图片

小哥的解决方法是recreate app,不过这也太麻烦了吧。不对!等等!我看到了什么?recreate?re!?

······ ???!!!

天啦噜,我怎么忘记了重启大法!!!

然后我满怀期待地关掉了pycharm,重新打开了项目。

django.db.utils.InternalError 1054 Unknown column 不存在代码中_第5张图片

emmm,是在下输了(哭)。

话说搜索资料的时候,很不爽的事情是,大家总是说works fine,works fine。然而我一点都不fine。

django.db.utils.InternalError 1054 Unknown column 不存在代码中_第6张图片

你可能感兴趣的:(Web)