---
slug: "redash-upgrade-postgres-migration-6-to-7"
title: "Migrating Redash from Version 6 or Below to Version 7 to Prevent Launch Issues (Also Necessary for Transitioning from Version 8 to 9)"
description: "Why Google Japanese Input asks for 'Full Disk Access' on macOS Big Sur, and what happens if you decline the permission."
url: "https://www.ytyng.com/en/blog/redash-upgrade-postgres-migration-6-to-7"
publish_date: "2022-09-09T05:32:20Z"
created: "2022-09-09T05:32:20Z"
updated: "2026-05-11T13:21:44.235Z"
categories: []
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/8499f4cfbf0d4fad9fc0dc0614fd848e.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "en"
---

# Migrating Redash from Version 6 or Below to Version 7 to Prevent Launch Issues (Also Necessary for Transitioning from Version 8 to 9)

<p>When handling Redash with Docker and upgrading from version 6 to 7, the system fails to start.</p>
<p>Upon checking the logs, an error related to changes in the database fields is observed.</p>
<pre>$ docker logs &lt;container-id&gt;</pre>
<pre>HINT: Perhaps you meant to reference the column "users.email".<br /> [SQL: 'SELECT users.profile_image_url AS users_profile_image_url, users.groups AS users_groups, users.updated_at AS users_updated_at, users.created_at AS users_created_at, users.id AS users_id, users.org_id AS users_org_id, users.name AS users_name, users.email AS users_email, users.password_hash AS users_password_hash, users.api_key AS users_api_key, users.disabled_at AS users_disabled_at, users.details AS users_details \nFROM users \nWHERE users.id = %(id_1)s AND %(param_1)s = users.org_id'] [parameters: {'id_1': u'1', 'param_1': 1}] (Background on this error at: http://sqlalche.me/e/f405)<br />[2022-09-09 04:16:20,248][PID:10][ERROR][redash] Exception on /favicon.ico [GET]<br />Traceback (most recent call last):<br /> File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1988, in wsgi_app<br /> response = self.full_dispatch_request()<br /> File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1641, in full_dispatch_request<br /> rv = self.handle_user_exception(e)<br /> File "/usr/local/lib/python2.7/dist-packages/flask_restful/__init__.py", line 271, in error_router<br /> return original_handler(e)<br /> File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1544, in handle_user_exception<br /> reraise(exc_type, exc_value, tb)<br /> File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1636, in full_dispatch_request<br /> request_started.send(self)<br /> File "/usr/local/lib/python2.7/dist-packages/blinker/base.py", line 267, in send<br /> for receiver in self.receivers_for(sender)]<br /> File "/app/redash/models/users.py", line 54, in update_user_active_at<br /> if current_user.is_authenticated and not current_user.is_api_user():<br /> File "/usr/local/lib/python2.7/dist-packages/werkzeug/local.py", line 343, in __getattr__<br /> return getattr(self._get_current_object(), name)<br /> File "/usr/local/lib/python2.7/dist-packages/werkzeug/local.py", line 302, in _get_current_object<br /> return self.__local()<br /> File "/usr/local/lib/python2.7/dist-packages/flask_login/utils.py", line 26, in &lt;lambda&gt;<br /> current_user = LocalProxy(lambda: _get_user())<br /> File "/usr/local/lib/python2.7/dist-packages/flask_login/utils.py", line 302, in _get_user<br /> current_app.login_manager._load_user()<br /> File "/usr/local/lib/python2.7/dist-packages/flask_login/login_manager.py", line 317, in _load_user<br /> return self.reload_user()<br /> File "/usr/local/lib/python2.7/dist-packages/flask_login/login_manager.py", line 279, in reload_user<br /> user = self.user_callback(user_id)<br /> File "/app/redash/authentication/__init__.py", line 63, in load_user<br /> user = models.User.get_by_id_and_org(user_id, org)<br /> File "/app/redash/models/mixins.py", line 28, in get_by_id_and_org<br /> return query.one()<br /> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2954, in one<br /> ret = self.one_or_none()<br /> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2924, in one_or_none<br /> ret = list(self)<br /> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2995, in __iter__<br /> return self._execute_and_instances(context)<br /> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 3018, in _execute_and_instances<br /> result = conn.execute(querycontext.statement, self._params)<br /> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 948, in execute<br /> return meth(self, multiparams, params)<br /> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection<br /> return connection._execute_clauseelement(self, multiparams, params)<br /> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement<br /> compiled_sql, distilled_params<br /> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context<br /> context)<br /> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception<br /> exc_info<br /> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause<br /> reraise(type(exception), exception, tb=exc_tb, cause=cause)<br /> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context<br /> context)<br /> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 509, in do_execute<br /> cursor.execute(statement, parameters)<br />ProgrammingError: (psycopg2.ProgrammingError) column users.details does not exist<br />LINE 1: ..._api_key, users.disabled_at AS users_disabled_at, users.deta...</pre>
<p></p>
<p>A database migration is required.</p>
<pre>cd /opt/redash<br />sudo docker-compose exec server /bin/bash</pre>
<p>Or</p>
<pre>kubectl exec -it ${podname} -- /bin/bash</pre>
<p>Inside the Docker container:</p>
<pre>redash@81a857097192:/app$ /app/bin/docker-entrypoint manage db upgrade</pre>
<pre>[2022-09-09 05:10:34,736][PID:704][INFO][root] Generating grammar tables from /usr/lib/python2.7/lib2to3/Grammar.txt<br />[2022-09-09 05:10:34,756][PID:704][INFO][root] Generating grammar tables from /usr/lib/python2.7/lib2to3/PatternGrammar.txt<br />[2022-09-09 05:10:36,360][PID:704][INFO][alembic.runtime.migration] Context impl PostgresqlImpl.<br />[2022-09-09 05:10:36,361][PID:704][INFO][alembic.runtime.migration] Will assume transactional DDL.<br />[2022-09-09 05:10:36,368][PID:704][INFO][alembic.runtime.migration] Running upgrade 71477dadd6ef -&gt; 640888ce445d, Add new scheduling data.<br />[2022-09-09 05:10:36,451][PID:704][INFO][alembic.runtime.migration] Running upgrade 640888ce445d -&gt; e7f8a917aa8e, Add user details JSON column.<br />[2022-09-09 05:10:36,467][PID:704][INFO][alembic.runtime.migration] Running upgrade e7f8a917aa8e -&gt; 73beceabb948, bring_back_null_schedule<br />[2022-09-09 05:10:36,476][PID:704][INFO][alembic.runtime.migration] Running upgrade 73beceabb948 -&gt; 98af61feea92, add_encrypted_options_to_data_sources<br />[2022-09-09 05:10:36,483][PID:704][INFO][alembic.runtime.migration] Running upgrade 98af61feea92 -&gt; e5c7a4e2df4d, remove_query_tracker_keys</pre>
<p>This should allow the execution to proceed.</p>
<p></p>
<p>Note: When upgrading from version 8 to 9, a manage db upgrade is also required.</p>
<p></p>
