Tuesday, October 22, 2019

Django after migration UndefinedColumn error in production

Hi everyone,


I have a website in production. I have an app, with a model. It contained a markdown_file attribute:

markdown_file=models.FileField(upload_to='/media/')

But since the number of file is limited, I decided to make it a markdown_filename attribute with a choices selection box:

markdown_filename=models.CharField(max_length=30,null=True,blank=True,choices=MENU_MARKDOWN_FILE_CHOICES)

Therefore, I modified this model and made migrations locally. I pushed the code in production and run:

python manage.py migrate

After I checked with showmigrations and sqlmigrate, that the modification I made were there. Then, I checked in the database, that the fields were correctly modified. But, I still get this error, when trying to access the website:

ERROR:django.request:Internal Server Error: /  Traceback (most recent call last):    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute      return self.cursor.execute(sql, params)  psycopg2.errors.UndefinedColumn: column showcase_subpage.markdown_file does not exist  LINE 1: ...bpage"."slug", "showcase_subpage"."html_content", "showcase_...                                                               ^    The above exception was the direct cause of the following exception:    Traceback (most recent call last):    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner      response = get_response(request)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response      response = self.process_exception_by_middleware(e, request)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response      response = wrapped_callback(request, *callback_args, **callback_kwargs)    File "./showcase/views.py", line 10, in home      return render(request, 'showcase/home.html', context)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/shortcuts.py", line 36, in render      content = loader.render_to_string(template_name, context, request, using=using)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/template/loader.py", line 62, in render_to_string      return template.render(context, request)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/template/backends/django.py", line 61, in render      return self.template.render(context)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/template/base.py", line 171, in render      return self._render(context)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/template/base.py", line 163, in _render      return self.nodelist.render(context)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/template/base.py", line 937, in render      bit = node.render_annotated(context)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/template/base.py", line 904, in render_annotated      return self.render(context)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render      return compiled_parent._render(context)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/template/base.py", line 163, in _render      return self.nodelist.render(context)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/template/base.py", line 937, in render      bit = node.render_annotated(context)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/template/base.py", line 904, in render_annotated      return self.render(context)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/template/defaulttags.py", line 166, in render      len_values = len(values)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/db/models/query.py", line 256, in __len__      self._fetch_all()    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/db/models/query.py", line 1242, in _fetch_all      self._result_cache = list(self._iterable_class(self))    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/db/models/query.py", line 55, in __iter__      results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1100, in execute_sql      cursor.execute(sql, params)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 67, in execute      return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers      return executor(sql, params, many, context)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute      return self.cursor.execute(sql, params)    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/db/utils.py", line 89, in __exit__      raise dj_exc_value.with_traceback(traceback) from exc_value    File "/srv/data/web/vhosts/default/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute      return self.cursor.execute(sql, params)  django.db.utils.ProgrammingError: column showcase_subpage.markdown_file does not exist  LINE 1: ...bpage"."slug", "showcase_subpage"."html_content", "showcase_...                                                               ^

The markdown_file field has been modified and renamed as markdown_filename. It has been correctly specified in the migrations. The modification is effective in the database. I tested locally (it works fine locally), to make sure, I don't have anymore code calling markdown_file attribute. I also tried clearing the migrations history and the database, to rebuilt it as new, but, the problem is still there. I can't see why, this former attributes is still queried, though the migrations went OK, without any error.

No comments:

Post a Comment