Upgrade from 0.12.0 to 1.0.1.b2833 throws errors


#1

After successfully applied migration scripts against DB I can see dashboards but queries are not visible.

Results of running the migration script:
root@0e5f707dda4e:/opt/redash/current# sudo -u redash bin/run ./manage.py db migrate
[2017-07-27 22:33:45,583][PID:4068][INFO][alembic.runtime.migration] Context impl PostgresqlImpl.
[2017-07-27 22:33:45,583][PID:4068][INFO][alembic.runtime.migration] Will assume transactional DDL.
[2017-07-27 22:33:45,599][PID:4068][INFO][alembic.ddl.postgresql] Detected sequence named ‘groups_id_seq’ as owned by integer column ‘groups(id)’, assuming SERIAL and omitting
[2017-07-27 22:33:45,619][PID:4068][INFO][alembic.ddl.postgresql] Detected sequence named ‘query_snippets_id_seq’ as owned by integer column ‘query_snippets(id)’, assuming SERIAL and omitting
[2017-07-27 22:33:45,639][PID:4068][INFO][alembic.ddl.postgresql] Detected sequence named ‘data_source_groups_id_seq’ as owned by integer column ‘data_source_groups(id)’, assuming SERIAL and omitting
[2017-07-27 22:33:45,659][PID:4068][INFO][alembic.ddl.postgresql] Detected sequence named ‘dashboards_id_seq’ as owned by integer column ‘dashboards(id)’, assuming SERIAL and omitting
[2017-07-27 22:33:45,670][PID:4068][INFO][alembic.ddl.postgresql] Detected sequence named ‘widgets_id_seq’ as owned by integer column ‘widgets(id)’, assuming SERIAL and omitting
[2017-07-27 22:33:45,712][PID:4068][INFO][alembic.ddl.postgresql] Detected sequence named ‘api_keys_id_seq’ as owned by integer column ‘api_keys(id)’, assuming SERIAL and omitting
[2017-07-27 22:33:45,723][PID:4068][INFO][alembic.ddl.postgresql] Detected sequence named ‘notification_destinations_id_seq’ as owned by integer column ‘notification_destinations(id)’, assuming SERIAL and omitting
[2017-07-27 22:33:45,794][PID:4068][INFO][alembic.ddl.postgresql] Detected sequence named ‘alert_subscriptions_id_seq’ as owned by integer column ‘alert_subscriptions(id)’, assuming SERIAL and omitting
[2017-07-27 22:33:45,812][PID:4068][INFO][alembic.ddl.postgresql] Detected sequence named ‘changes_id_seq’ as owned by integer column ‘changes(id)’, assuming SERIAL and omitting
[2017-07-27 22:33:45,822][PID:4068][INFO][alembic.ddl.postgresql] Detected sequence named ‘events_id_seq’ as owned by integer column ‘events(id)’, assuming SERIAL and omitting
[2017-07-27 22:33:45,832][PID:4068][INFO][alembic.ddl.postgresql] Detected sequence named ‘access_permissions_id_seq’ as owned by integer column ‘access_permissions(id)’, assuming SERIAL and omitting
[2017-07-27 22:33:45,838][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘access_permissions_grantee_id’ on ‘access_permissions’
[2017-07-27 22:33:45,839][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘access_permissions_grantor_id’ on ‘access_permissions’
[2017-07-27 22:33:45,839][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘access_permissions_object_id’ on ‘access_permissions’
[2017-07-27 22:33:45,839][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘access_permissions_object_type’ on ‘access_permissions’
[2017-07-27 22:33:45,841][PID:4068][INFO][alembic.autogenerate.compare] Detected added index ‘alert_subscriptions_destination_id_alert_id’ on ‘[‘destination_id’, ‘alert_id’]’
[2017-07-27 22:33:45,841][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘alert_subscriptions_alert_id’ on ‘alert_subscriptions’
[2017-07-27 22:33:45,841][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘alert_subscriptions_user_id’ on ‘alert_subscriptions’
[2017-07-27 22:33:45,845][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘alerts_query_id’ on ‘alerts’
[2017-07-27 22:33:45,845][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘alerts_user_id’ on ‘alerts’
[2017-07-27 22:33:45,847][PID:4068][INFO][alembic.autogenerate.compare] Detected added index ‘ix_api_keys_api_key’ on ‘[‘api_key’]’
[2017-07-27 22:33:45,847][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘api_keys_api_key’ on ‘api_keys’
[2017-07-27 22:33:45,847][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘api_keys_created_by_id’ on ‘api_keys’
[2017-07-27 22:33:45,848][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘api_keys_org_id’ on ‘api_keys’
[2017-07-27 22:33:45,849][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘changes_object_id’ on ‘changes’
[2017-07-27 22:33:45,849][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘changes_object_type’ on ‘changes’
[2017-07-27 22:33:45,849][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘changes_user_id’ on ‘changes’
[2017-07-27 22:33:45,850][PID:4068][INFO][alembic.autogenerate.compare] Detected NOT NULL on column ‘dashboards.is_draft’
[2017-07-27 22:33:45,850][PID:4068][INFO][alembic.autogenerate.compare] Detected added index ‘ix_dashboards_is_archived’ on ‘[‘is_archived’]’
[2017-07-27 22:33:45,850][PID:4068][INFO][alembic.autogenerate.compare] Detected added index ‘ix_dashboards_slug’ on ‘[‘slug’]’
[2017-07-27 22:33:45,851][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘dashboards_is_archived’ on ‘dashboards’
[2017-07-27 22:33:45,851][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘dashboards_org_id’ on ‘dashboards’
[2017-07-27 22:33:45,851][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘dashboards_slug’ on ‘dashboards’
[2017-07-27 22:33:45,851][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘dashboards_user_id’ on ‘dashboards’
[2017-07-27 22:33:45,852][PID:4068][INFO][alembic.autogenerate.compare] Detected removed column ‘dashboards.user_email’
[2017-07-27 22:33:45,853][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘data_source_groups_data_source_id’ on ‘data_source_groups’
[2017-07-27 22:33:45,853][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘data_source_groups_group_id’ on ‘data_source_groups’
[2017-07-27 22:33:45,856][PID:4068][INFO][alembic.autogenerate.compare] Detected changed index ‘data_sources_org_id_name’ on ‘data_sources’: unique=True to unique=False
[2017-07-27 22:33:45,857][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘data_sources_org_id’ on ‘data_sources’
[2017-07-27 22:33:45,859][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘events_org_id’ on ‘events’
[2017-07-27 22:33:45,859][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘events_user_id’ on ‘events’
[2017-07-27 22:33:45,861][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘groups_org_id’ on ‘groups’
[2017-07-27 22:33:45,861][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘groups_permissions’ on ‘groups’
[2017-07-27 22:33:45,862][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘notification_destinations_org_id’ on ‘notification_destinations’
[2017-07-27 22:33:45,862][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘notification_destinations_user_id’ on ‘notification_destinations’
[2017-07-27 22:33:45,866][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘organizations_slug’ on ‘organizations’
[2017-07-27 22:33:45,866][PID:4068][INFO][alembic.autogenerate.compare] Detected added unique constraint ‘None’ on ‘[‘slug’]’
[2017-07-27 22:33:45,867][PID:4068][INFO][alembic.autogenerate.compare] Detected NOT NULL on column ‘queries.is_draft’
[2017-07-27 22:33:45,871][PID:4068][INFO][alembic.autogenerate.compare] Detected added index ‘ix_queries_is_archived’ on ‘[‘is_archived’]’
[2017-07-27 22:33:45,871][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘queries_data_source_id’ on ‘queries’
[2017-07-27 22:33:45,871][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘queries_is_archived’ on ‘queries’
[2017-07-27 22:33:45,871][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘queries_last_modified_by_id’ on ‘queries’
[2017-07-27 22:33:45,871][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘queries_latest_query_data_id’ on ‘queries’
[2017-07-27 22:33:45,871][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘queries_org_id’ on ‘queries’
[2017-07-27 22:33:45,872][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘queries_user_id’ on ‘queries’
[2017-07-27 22:33:45,873][PID:4068][INFO][alembic.autogenerate.compare] Detected removed column ‘queries.user_email’
[2017-07-27 22:33:45,878][PID:4068][INFO][alembic.autogenerate.compare] Detected added index ‘ix_query_results_query_hash’ on ‘[‘query_hash’]’
[2017-07-27 22:33:45,878][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘query_results_data_source_id’ on ‘query_results’
[2017-07-27 22:33:45,878][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘query_results_org_id’ on ‘query_results’
[2017-07-27 22:33:45,878][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘query_results_query_hash’ on ‘query_results’
[2017-07-27 22:33:45,880][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘query_snippets_org_id’ on ‘query_snippets’
[2017-07-27 22:33:45,880][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘query_snippets_trigger’ on ‘query_snippets’
[2017-07-27 22:33:45,881][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘query_snippets_user_id’ on ‘query_snippets’
[2017-07-27 22:33:45,881][PID:4068][INFO][alembic.autogenerate.compare] Detected added unique constraint ‘None’ on ‘[‘trigger’]’
[2017-07-27 22:33:45,885][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘users_api_key’ on ‘users’
[2017-07-27 22:33:45,885][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘users_groups’ on ‘users’
[2017-07-27 22:33:45,885][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘users_org_id’ on ‘users’
[2017-07-27 22:33:45,885][PID:4068][INFO][alembic.autogenerate.compare] Detected added unique constraint ‘None’ on ‘[‘api_key’]’
[2017-07-27 22:33:45,891][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘visualizations_query_id’ on ‘visualizations’
[2017-07-27 22:33:45,893][PID:4068][INFO][alembic.autogenerate.compare] Detected added index ‘ix_widgets_dashboard_id’ on ‘[‘dashboard_id’]’
[2017-07-27 22:33:45,893][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘widgets_dashboard_id’ on ‘widgets’
[2017-07-27 22:33:45,894][PID:4068][INFO][alembic.autogenerate.compare] Detected removed index ‘widgets_visualization_id’ on ‘widgets’
Generating /opt/redash/redash.1.0.1.b2833/migrations/versions/69dd2c6f7446_.py … done

Exception received in celery logs:
2017-07-27 22:34:07 +0000] [4220] [INFO] Starting gunicorn 19.4.5
[2017-07-27 22:34:07 +0000] [4220] [INFO] Listening at: http://127.0.0.1:5000 (4220)
[2017-07-27 22:34:07 +0000] [4220] [INFO] Using worker: sync
[2017-07-27 22:34:07 +0000] [4243] [INFO] Booting worker with pid: 4243
[2017-07-27 22:34:07 +0000] [4246] [INFO] Booting worker with pid: 4246
[2017-07-27 22:34:07 +0000] [4249] [INFO] Booting worker with pid: 4249
[2017-07-27 22:34:07 +0000] [4250] [INFO] Booting worker with pid: 4250
[2017-07-27 22:34:16,919][PID:4249][INFO][metrics] method=GET path=/dashboard/james endpoint=redash.index status=200 content_type=text/html; charset=utf-8 content_length=871 duration=20.06 query_count=2 query_duration=2.85
[2017-07-27 22:34:17,389][PID:4243][INFO][metrics] method=GET path=/api/session endpoint=redash.session status=200 content_type=application/json content_length=811 duration=20.34 query_count=3 query_duration=3.73
[2017-07-27 22:34:17,542][PID:4250][INFO][metrics] method=GET path=/api/dashboards/recent endpoint=recent_dashboards status=200 content_type=application/json content_length=5012 duration=54.85 query_count=5 query_duration=29.32
[2017-07-27 22:34:17,547][PID:4246][INFO][metrics] method=GET path=/api/dashboards/james endpoint=dashboard status=200 content_type=application/json content_length=2291 duration=59.52 query_count=14 query_duration=25.55
[2017-07-27 22:34:18,597][PID:4249][INFO][metrics] method=POST path=/api/events endpoint=events status=200 content_type=application/json content_length=4 duration=32.99 query_count=2 query_duration=1.81
[2017-07-27 22:34:20,620] ERROR in app: Exception on /api/queries [GET]
Traceback (most recent call last):
File “/usr/local/lib/python2.7/dist-packages/flask/app.py”, line 1639, in full_dispatch_request
rv = self.dispatch_request()
File “/usr/local/lib/python2.7/dist-packages/flask/app.py”, line 1625, in dispatch_request
return self.view_functionsrule.endpoint
File “/usr/local/lib/python2.7/dist-packages/flask_restful/init.py”, line 477, in wrapper
resp = resource(*args, **kwargs)
File “/usr/local/lib/python2.7/dist-packages/flask_login/utils.py”, line 228, in decorated_view
return func(*args, **kwargs)
File “/usr/local/lib/python2.7/dist-packages/flask/views.py”, line 84, in view
return self.dispatch_request(*args, **kwargs)
File “/opt/redash/redash.1.0.1.b2833/redash/handlers/base.py”, line 28, in dispatch_request
return super(BaseResource, self).dispatch_request(*args, **kwargs)
File “/usr/local/lib/python2.7/dist-packages/flask_restful/init.py”, line 587, in dispatch_request
resp = meth(*args, **kwargs)
File “/opt/redash/redash.1.0.1.b2833/redash/permissions.py”, line 47, in decorated
return fn(*args, **kwargs)
File “/opt/redash/redash.1.0.1.b2833/redash/handlers/queries.py”, line 143, in get
return paginate(results, page, page_size, lambda q: q.to_dict(with_stats=True, with_last_modified_by=False))
File “/opt/redash/redash.1.0.1.b2833/redash/handlers/base.py”, line 98, in paginate
results = query_set.paginate(page, page_size)
File “/usr/local/lib/python2.7/dist-packages/flask_sqlalchemy/init.py”, line 476, in paginate
items = self.limit(per_page).offset((page - 1) * per_page).all()
File “/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py”, line 2645, in all
return list(self)
File “/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/loading.py”, line 90, in instances
util.raise_from_cause(err)
File “/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py”, line 202, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File “/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/loading.py”, line 71, in instances
fetch = cursor.fetchall()
File “/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/result.py”, line 1126, in fetchall
self.cursor, self.context)
File “/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py”, line 1396, in _handle_dbapi_exception
util.reraise(*exc_info)
File “/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/result.py”, line 1120, in fetchall
l = self.process_rows(self._fetchall_impl())
File “/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/result.py”, line 1071, in _fetchall_impl
return self.cursor.fetchall()
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xc2 in position 1069: ordinal not in range(128)

Any ideas what could be wrong ?