redash icon indicating copy to clipboard operation
redash copied to clipboard

SQL Organization Error - Redash not starting.

Open Ahson-Shaikh opened this issue 8 months ago • 6 comments
trafficstars

I'm trying to deploy redash and facing the schema issue I guess. I'm actually testing this on Easypanel and have setup each service separately. Can someone please guide on this?

I'm pretty sure It gotta be something with the migration but, I'm not sure how's that being done here, since it runs the ./setup.sh script but, there is no migration mentioned. Please help! Thanks!

LINE 2: FROM organizations 
             ^

[SQL: SELECT organizations.updated_at AS organizations_updated_at, organizations.created_at AS organizations_created_at, organizations.id AS organizations_id, organizations.name AS organizations_name, organizations.slug AS organizations_slug, organizations.settings AS organizations_settings 
FROM organizations ```

Ahson-Shaikh avatar Mar 10 '25 16:03 Ahson-Shaikh

If u use docker, u can use docker-compose run --rm server manage db upgrade to upgrade pg.

gaecoli avatar Mar 12 '25 02:03 gaecoli

@Ahson-Shaikh did db upgrade work for you? If this is a new database you would run database create_tables

eradman avatar Apr 19 '25 00:04 eradman

I'm experiencing the same issue.

% git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
git log
commit 5d31429ca80486f27645e7e6d5447818b07315f0 (HEAD -> master, origin/master, origin/HEAD)
Author: Gleb Lesnikov <[email protected]>
Date:   Mon May 5 10:53:07 2025 +0400
% docker compose build  
[+] Building 4.4s (54/67)                                                                                                                                                                                                           docker:desktop-linux
 => [server internal] load build definition from Dockerfile                                                                                                                                                                                         0.0s
 => => transferring dockerfile: 3.67kB                                                                                                                                                                                                              0.0s
 => [worker internal] load metadata for docker.io/library/python:3.10-slim-bookworm                                                                                                                                                                 1.7s
 => [worker internal] load metadata for docker.io/library/node:18-bookworm                                                                                                                                                                          1.7s
 => [server internal] load .dockerignore                                                                                                                                                                                                            0.0s
 => => transferring context: 203B                                                                                                                                                                                                                   0.0s
 => [worker frontend-builder  1/12] FROM docker.io/library/node:18-bookworm@sha256:867be01f97d45cb7d89a8ef0b328d23e8207412ebec4564441ed8cabc8cc4ecd                                                                                                 0.0s
 => => resolve docker.io/library/node:18-bookworm@sha256:867be01f97d45cb7d89a8ef0b328d23e8207412ebec4564441ed8cabc8cc4ecd                                                                                                                           0.0s
 => [worker stage-1  1/12] FROM docker.io/library/python:3.10-slim-bookworm@sha256:57038683f4a259e17fcff1ccef7ba30b1065f4b3317dabb5bd7c82640a5ed64f                                                                                                 0.0s
 => => resolve docker.io/library/python:3.10-slim-bookworm@sha256:57038683f4a259e17fcff1ccef7ba30b1065f4b3317dabb5bd7c82640a5ed64f                                                                                                                  0.0s
 => [server internal] load build context                                                                                                                                                                                                            0.1s
 => => transferring context: 141.81kB                                                                                                                                                                                                               0.1s
 => CACHED [worker frontend-builder  2/12] RUN npm install --global --force [email protected]                                                                                                                                                            0.0s
 => CACHED [worker frontend-builder  3/12] RUN useradd -m -d /frontend redash                                                                                                                                                                       0.0s
 => CACHED [worker frontend-builder  4/12] WORKDIR /frontend                                                                                                                                                                                        0.0s
 => CACHED [server frontend-builder  5/12] COPY --chown=redash package.json yarn.lock .yarnrc /frontend/                                                                                                                                            0.0s
 => CACHED [server frontend-builder  6/12] COPY --chown=redash viz-lib /frontend/viz-lib                                                                                                                                                            0.0s
 => CACHED [server frontend-builder  7/12] COPY --chown=redash scripts /frontend/scripts                                                                                                                                                            0.0s
 => CACHED [server frontend-builder  8/12] RUN yarn config set network-timeout 300000                                                                                                                                                               0.0s
 => CACHED [server frontend-builder  9/12] RUN if [ "xtrue" = "x" ] ; then yarn --frozen-lockfile --network-concurrency 1; fi                                                                                                                       0.0s
 => CACHED [server frontend-builder 10/12] COPY --chown=redash client /frontend/client                                                                                                                                                              0.0s
 => CACHED [server frontend-builder 11/12] COPY --chown=redash webpack.config.js /frontend/                                                                                                                                                         0.0s
 => CACHED [server frontend-builder 12/12] RUN <<EOF (if [ "xtrue" = "x" ]; then...)                                                                                                                                                                0.0s
 => CACHED [worker stage-1  2/12] RUN useradd --create-home redash                                                                                                                                                                                  0.0s
 => CACHED [worker stage-1  3/12] RUN apt-get update &&   apt-get install -y --no-install-recommends   pkg-config   curl   gnupg   build-essential   pwgen   libffi-dev   sudo   git-core   libkrb5-dev   libpq-dev   g++ unixodbc-dev   xmlsec1    0.0s
 => CACHED [worker stage-1  4/12] RUN <<EOF (if [ "linux/amd64" = "linux/amd64" ]; then...)                                                                                                                                                         0.0s
 => CACHED [worker stage-1  5/12] WORKDIR /app                                                                                                                                                                                                      0.0s
 => CACHED [worker stage-1  6/12] RUN curl -sSL https://install.python-poetry.org | python3 -                                                                                                                                                       0.0s
 => CACHED [worker stage-1  7/12] RUN /etc/poetry/bin/poetry cache clear pypi --all                                                                                                                                                                 0.0s
 => CACHED [server stage-1  8/12] COPY pyproject.toml poetry.lock ./                                                                                                                                                                                0.0s
 => CACHED [server stage-1  9/12] RUN /etc/poetry/bin/poetry install --only main,all_ds,dev --no-root --no-interaction --no-ansi                                                                                                                    0.0s
 => [server stage-1 10/12] COPY --chown=redash . /app                                                                                                                                                                                               0.4s
 => [server stage-1 11/12] COPY --from=frontend-builder --chown=redash /frontend/client/dist /app/client/dist                                                                                                                                       0.0s
 => [server stage-1 12/12] RUN chown redash /app                                                                                                                                                                                                    0.2s
 => [server] exporting to image                                                                                                                                                                                                                     1.0s
 => => exporting layers                                                                                                                                                                                                                             0.5s
 => => exporting manifest sha256:219df6f4760d01402e6882699043c47f94fa59a44e403ba2b095c59047edeb37                                                                                                                                                   0.0s
 => => exporting config sha256:aaf39506242b31f319850ce8fbb072ccb634a0ef6d86f9623ece57c475c0a23b                                                                                                                                                     0.0s
 => => exporting attestation manifest sha256:2076e6d17a568d79c2a6cbd9f6b18f4cf6bff7910b4694a29c3db4525b38508e                                                                                                                                       0.0s
 => => exporting manifest list sha256:cf88031e712921b63ac41b775304d7c9b8e77c1daf12fff94c295d06505715f8                                                                                                                                              0.0s
 => => naming to docker.io/library/redash-server:latest                                                                                                                                                                                             0.0s
 => => unpacking to docker.io/library/redash-server:latest                                                                                                                                                                                          0.4s
 => [server] resolving provenance for metadata file                                                                                                                                                                                                 0.0s
 => [scheduler internal] load build definition from Dockerfile                                                                                                                                                                                      0.0s
 => => transferring dockerfile: 3.67kB                                                                                                                                                                                                              0.0s
 => [worker internal] load build definition from Dockerfile                                                                                                                                                                                         0.0s
 => => transferring dockerfile: 3.67kB                                                                                                                                                                                                              0.0s
 => [scheduler internal] load .dockerignore                                                                                                                                                                                                         0.0s
 => => transferring context: 203B                                                                                                                                                                                                                   0.0s
 => [worker internal] load .dockerignore                                                                                                                                                                                                            0.0s
 => => transferring context: 203B                                                                                                                                                                                                                   0.0s
 => [scheduler internal] load build context                                                                                                                                                                                                         0.1s
 => => transferring context: 141.81kB                                                                                                                                                                                                               0.1s
 => [worker internal] load build context                                                                                                                                                                                                            0.1s
 => => transferring context: 106.51kB                                                                                                                                                                                                               0.1s
 => CACHED [worker stage-1  8/12] COPY pyproject.toml poetry.lock ./                                                                                                                                                                                0.0s
 => CACHED [worker stage-1  9/12] RUN /etc/poetry/bin/poetry install --only main,all_ds,dev --no-root --no-interaction --no-ansi                                                                                                                    0.0s
 => CACHED [worker stage-1 10/12] COPY --chown=redash . /app                                                                                                                                                                                        0.0s
 => CACHED [worker frontend-builder  5/12] COPY --chown=redash package.json yarn.lock .yarnrc /frontend/                                                                                                                                            0.0s
 => CACHED [worker frontend-builder  6/12] COPY --chown=redash viz-lib /frontend/viz-lib                                                                                                                                                            0.0s
 => CACHED [worker frontend-builder  7/12] COPY --chown=redash scripts /frontend/scripts                                                                                                                                                            0.0s
 => CACHED [worker frontend-builder  8/12] RUN yarn config set network-timeout 300000                                                                                                                                                               0.0s
 => CACHED [worker frontend-builder  9/12] RUN if [ "xtrue" = "x" ] ; then yarn --frozen-lockfile --network-concurrency 1; fi                                                                                                                       0.0s
 => CACHED [worker frontend-builder 10/12] COPY --chown=redash client /frontend/client                                                                                                                                                              0.0s
 => CACHED [worker frontend-builder 11/12] COPY --chown=redash webpack.config.js /frontend/                                                                                                                                                         0.0s
 => CACHED [worker frontend-builder 12/12] RUN <<EOF (if [ "xtrue" = "x" ]; then...)                                                                                                                                                                0.0s
 => CACHED [worker stage-1 11/12] COPY --from=frontend-builder --chown=redash /frontend/client/dist /app/client/dist                                                                                                                                0.0s
 => CACHED [scheduler stage-1 12/12] RUN chown redash /app                                                                                                                                                                                          0.0s
 => [worker] exporting to image                                                                                                                                                                                                                     0.1s
 => => exporting layers                                                                                                                                                                                                                             0.0s
 => => exporting manifest sha256:50cee7c5f8cf6dde1152e2a5e06d4ef56a4a5ae6242c1bc34e9fceddc7358553                                                                                                                                                   0.0s
 => => exporting config sha256:1e4da62c59ba3cd073e6027a4890ae5779dfea90bb7087f3a9d049384e2ad78b                                                                                                                                                     0.0s
 => => exporting attestation manifest sha256:ee98ff5c9b19480bc3f77f4bc65f5c172d2f11bf3662bd9f109c88f032a4037f                                                                                                                                       0.0s
 => => exporting manifest list sha256:e6780e195969866b404a534d5a0746c0fbccb7699f6b92b4c09a9e9aa9e2d4c1                                                                                                                                              0.0s
 => => naming to docker.io/library/redash-worker:latest                                                                                                                                                                                             0.0s
 => => unpacking to docker.io/library/redash-worker:latest                                                                                                                                                                                          0.0s
 => [scheduler] exporting to image                                                                                                                                                                                                                  0.1s
 => => exporting layers                                                                                                                                                                                                                             0.0s
 => => exporting manifest sha256:3444c15a306c2a2b3bc348b3e97aed1df212df48b6312807f7cb865eaae6b41f                                                                                                                                                   0.0s
 => => exporting config sha256:8962222e19196736c1ae5656d1266b97e3fed1015c5b17aba9a5fbb2c478f6b0                                                                                                                                                     0.0s
 => => exporting attestation manifest sha256:761a2b085cc189fd522657879159bc0a1cf60f0f0f37f012892597d3c8fae3dc                                                                                                                                       0.0s
 => => exporting manifest list sha256:adaa25a3af4b108d9479ec6fbea8c68c2cb232e4adce8f2a5e3fbd7505573960                                                                                                                                              0.0s
 => => naming to docker.io/library/redash-scheduler:latest                                                                                                                                                                                          0.0s
 => => unpacking to docker.io/library/redash-scheduler:latest                                                                                                                                                                                       0.0s
 => [scheduler] resolving provenance for metadata file                                                                                                                                                                                              0.0s
 => [worker] resolving provenance for metadata file                                                                                                                                                                                                 0.0s
[+] Building 3/3
 ✔ scheduler  Built                                                                                                                                                                                                                                 0.0s 
 ✔ server     Built                                                                                                                                                                                                                                 0.0s 
 ✔ worker     Built
% docker compose up   
[+] Running 7/7
 ✔ Network redash_default        Created                                                                                                                                                                                                            0.1s 
 ✔ Container redash-email-1      Created                                                                                                                                                                                                            0.1s 
 ✔ Container redash-redis-1      Created                                                                                                                                                                                                            0.1s 
 ✔ Container redash-postgres-1   Created                                                                                                                                                                                                            0.1s 
 ✔ Container redash-server-1     Created                                                                                                                                                                                                            0.1s 
 ✔ Container redash-worker-1     Created                                                                                                                                                                                                            0.1s 
 ✔ Container redash-scheduler-1  Created                                                                                                                                                                                                            0.1s 
Attaching to email-1, postgres-1, redis-1, scheduler-1, server-1, worker-1
redis-1      | 1:C 05 May 2025 10:15:23.669 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis-1      | 1:C 05 May 2025 10:15:23.670 * Redis version=7.4.3, bits=64, commit=00000000, modified=0, pid=1, just started
redis-1      | 1:C 05 May 2025 10:15:23.670 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis-1      | 1:M 05 May 2025 10:15:23.670 * monotonic clock: POSIX clock_gettime
redis-1      | 1:M 05 May 2025 10:15:23.672 * Running mode=standalone, port=6379.
redis-1      | 1:M 05 May 2025 10:15:23.674 * Server initialized
redis-1      | 1:M 05 May 2025 10:15:23.674 * Ready to accept connections tcp
postgres-1   | ********************************************************************************
postgres-1   | WARNING: POSTGRES_HOST_AUTH_METHOD has been set to "trust". This will allow
postgres-1   |          anyone with access to the Postgres port to access your database without
postgres-1   |          a password, even if POSTGRES_PASSWORD is set. See PostgreSQL
postgres-1   |          documentation about "trust":
postgres-1   |          https://www.postgresql.org/docs/current/auth-trust.html
postgres-1   |          In Docker's default configuration, this is effectively any other
postgres-1   |          container on the same system.
postgres-1   | 
postgres-1   |          It is not recommended to use POSTGRES_HOST_AUTH_METHOD=trust. Replace
postgres-1   |          it with "-e POSTGRES_PASSWORD=password" instead to set a password in
postgres-1   |          "docker run".
postgres-1   | ********************************************************************************
postgres-1   | The files belonging to this database system will be owned by user "postgres".
postgres-1   | This user must also own the server process.
postgres-1   | 
postgres-1   | The database cluster will be initialized with locale "en_US.utf8".
postgres-1   | The default database encoding has accordingly been set to "UTF8".
postgres-1   | The default text search configuration will be set to "english".
postgres-1   | 
postgres-1   | Data page checksums are disabled.
postgres-1   | 
postgres-1   | fixing permissions on existing directory /var/lib/postgresql/data ... ok
postgres-1   | creating subdirectories ... ok
postgres-1   | selecting dynamic shared memory implementation ... posix
postgres-1   | selecting default "max_connections" ... 100
postgres-1   | selecting default "shared_buffers" ... 128MB
postgres-1   | selecting default time zone ... UTC
postgres-1   | creating configuration files ... ok
postgres-1   | running bootstrap script ... ok
scheduler-1  | Starting dev RQ scheduler...
worker-1     | Starting dev RQ worker...
email-1      | MailDev using directory /tmp/maildev-1
email-1      | MailDev webapp running at http://localhost:1080/
email-1      | (node:1) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
email-1      | (Use `node --trace-deprecation ...` to show where the warning was created)
email-1      | MailDev SMTP Server running at localhost:1025
postgres-1   | performing post-bootstrap initialization ... ok
postgres-1   | syncing data to disk ... ok
postgres-1   | 
postgres-1   | 
postgres-1   | Success. You can now start the database server using:
postgres-1   | 
postgres-1   |     pg_ctl -D /var/lib/postgresql/data -l logfile start
postgres-1   | 
postgres-1   | initdb: warning: enabling "trust" authentication for local connections
postgres-1   | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
postgres-1   | waiting for server to start....2025-05-05 10:15:25.425 UTC [45] LOG:  starting PostgreSQL 17.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 14.2.0) 14.2.0, 64-bit
postgres-1   | 2025-05-05 10:15:25.425 UTC [45] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres-1   | 2025-05-05 10:15:25.427 UTC [48] LOG:  database system was shut down at 2025-05-05 10:15:25 UTC
postgres-1   | 2025-05-05 10:15:25.431 UTC [45] LOG:  database system is ready to accept connections
postgres-1   |  done
postgres-1   | server started
postgres-1   | 
postgres-1   | /usr/local/bin/postgres-docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
postgres-1   | 
postgres-1   | waiting for server to shut down....2025-05-05 10:15:25.534 UTC [45] LOG:  received fast shutdown request
postgres-1   | 2025-05-05 10:15:25.534 UTC [45] LOG:  aborting any active transactions
postgres-1   | 2025-05-05 10:15:25.538 UTC [45] LOG:  background worker "logical replication launcher" (PID 51) exited with exit code 1
postgres-1   | 2025-05-05 10:15:25.538 UTC [46] LOG:  shutting down
postgres-1   | 2025-05-05 10:15:25.538 UTC [46] LOG:  checkpoint starting: shutdown immediate
postgres-1   | 2025-05-05 10:15:25.540 UTC [46] LOG:  checkpoint complete: wrote 3 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.001 s, sync=0.001 s, total=0.002 s; sync files=0, longest=0.000 s, average=0.000 s; distance=0 kB, estimate=0 kB; lsn=0/150A0B0, redo lsn=0/150A0B0
postgres-1   | 2025-05-05 10:15:25.545 UTC [45] LOG:  database system is shut down
postgres-1   |  done
postgres-1   | server stopped
postgres-1   | 
postgres-1   | PostgreSQL init process complete; ready for start up.
postgres-1   | 
postgres-1   | ************************************
postgres-1   | PostgreSQL data directory: /var/lib/postgresql/data
postgres-1   | ************************************
postgres-1   | 2025-05-05 10:15:25.658 UTC [9] LOG:  starting PostgreSQL 17.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 14.2.0) 14.2.0, 64-bit
postgres-1   | 2025-05-05 10:15:25.658 UTC [9] LOG:  listening on IPv4 address "0.0.0.0", port 5432
postgres-1   | 2025-05-05 10:15:25.658 UTC [9] LOG:  listening on IPv6 address "::", port 5432
postgres-1   | 2025-05-05 10:15:25.658 UTC [9] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres-1   | 2025-05-05 10:15:25.660 UTC [60] LOG:  database system was shut down at 2025-05-05 10:15:25 UTC
postgres-1   | 2025-05-05 10:15:25.665 UTC [9] LOG:  database system is ready to accept connections
server-1     | [2025-05-05 10:15:34,448][PID:1][INFO][xmlschema] Include schema from 'file:///usr/local/lib/python3.10/site-packages/xmlschema/schemas/XSD_1.1/xsd11-extra.xsd'
worker-1     | [2025-05-05 10:15:34,447][PID:7][INFO][xmlschema] Include schema from 'file:///usr/local/lib/python3.10/site-packages/xmlschema/schemas/XSD_1.1/xsd11-extra.xsd'
scheduler-1  | [2025-05-05 10:15:34,448][PID:6][INFO][xmlschema] Include schema from 'file:///usr/local/lib/python3.10/site-packages/xmlschema/schemas/XSD_1.1/xsd11-extra.xsd'
scheduler-1  | [2025-05-05 10:15:35,265][PID:6][INFO][redash.tasks.schedule] Scheduling 305c0cae0a196ae96915fd2b6f81001c435aad65 (refresh_queries) with interval 30.
scheduler-1  | [2025-05-05 10:15:35,270][PID:6][INFO][redash.tasks.schedule] Scheduling 59a84668e68687338646f735965213c58e814b32 (remove_ghost_locks) with interval 60.
scheduler-1  | [2025-05-05 10:15:35,272][PID:6][INFO][redash.tasks.schedule] Scheduling 75540cdf868e7873f5eec072177423b13b98dece (empty_schedules) with interval 3600.
scheduler-1  | [2025-05-05 10:15:35,273][PID:6][INFO][redash.tasks.schedule] Scheduling 52bcd40c254552539398db3cdb15055d4a9a536a (refresh_schemas) with interval 1800.
scheduler-1  | [2025-05-05 10:15:35,275][PID:6][INFO][redash.tasks.schedule] Scheduling 18281a865ed3d1a60f366aeb8596fe2283aa421f (sync_user_details) with interval 60.
scheduler-1  | [2025-05-05 10:15:35,276][PID:6][INFO][redash.tasks.schedule] Scheduling 797f4f959c6c96c738efd445b17db75742db80a9 (send_aggregated_errors) with interval 3600.
server-1     |  * Debug mode: on
scheduler-1  | [2025-05-05 10:15:35,278][PID:6][INFO][redash.tasks.schedule] Scheduling 526f2c7f55dfe92457914cd7df02cfffe4dec877 (version_check) with interval 86400.
scheduler-1  | [2025-05-05 10:15:35,279][PID:6][INFO][redash.tasks.schedule] Scheduling e27209059575fcc17c527c47d0957cb21756e551 (cleanup_query_results) with interval 300.
scheduler-1  | [2025-05-05 10:15:35,281][PID:6][INFO][rq_scheduler.scheduler] Registering birth
server-1     | [2025-05-05 10:15:35,298][PID:1][INFO][werkzeug] WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
server-1     |  * Running on all addresses (0.0.0.0)
server-1     |  * Running on http://127.0.0.1:5000
server-1     |  * Running on http://172.24.0.5:5000
server-1     | [2025-05-05 10:15:35,298][PID:1][INFO][werkzeug] Press CTRL+C to quit
server-1     | [2025-05-05 10:15:35,317][PID:1][INFO][werkzeug]  * Restarting with watchdog (inotify)
worker-1     | [2025-05-05 10:15:35,328][PID:7][INFO][rq.worker] Worker rq:worker:96648833d6ea432289739148c0a50652 started with PID 7, version 1.16.1
worker-1     | [2025-05-05 10:15:35,328][PID:7][INFO][rq.worker] Subscribing to channel rq:pubsub:96648833d6ea432289739148c0a50652
worker-1     | [2025-05-05 10:15:35,330][PID:7][INFO][rq.worker] *** Listening on periodic, emails, default, scheduled_queries, queries, schemas...
worker-1     | [2025-05-05 10:15:35,331][PID:7][INFO][rq.worker] Cleaning registries for queue: periodic
worker-1     | [2025-05-05 10:15:35,333][PID:7][INFO][rq.worker] Cleaning registries for queue: emails
worker-1     | [2025-05-05 10:15:35,335][PID:7][INFO][rq.worker] Cleaning registries for queue: default
worker-1     | [2025-05-05 10:15:35,337][PID:7][INFO][rq.worker] Cleaning registries for queue: scheduled_queries
worker-1     | [2025-05-05 10:15:35,339][PID:7][INFO][rq.worker] Cleaning registries for queue: queries
worker-1     | [2025-05-05 10:15:35,341][PID:7][INFO][rq.worker] Cleaning registries for queue: schemas
worker-1     | [2025-05-05 10:15:35,347][PID:7][INFO][rq.worker] periodic: 18281a865ed3d1a60f366aeb8596fe2283aa421f
worker-1     | [2025-05-05 10:15:35,369][PID:31][INFO][rq.worker] periodic: Job OK (18281a865ed3d1a60f366aeb8596fe2283aa421f)
worker-1     | [2025-05-05 10:15:35,369][PID:31][INFO][rq.worker] Result is kept for 600 seconds
worker-1     | [2025-05-05 10:15:35,380][PID:7][INFO][rq.worker] periodic: 305c0cae0a196ae96915fd2b6f81001c435aad65
worker-1     | [2025-05-05 10:15:35,390][PID:32][INFO][rq.job.redash.tasks.queries.maintenance] job.func_name=redash.tasks.queries.maintenance.refresh_queries job.id=305c0cae0a196ae96915fd2b6f81001c435aad65 Refreshing queries...
postgres-1   | 2025-05-05 10:15:35.433 UTC [64] ERROR:  relation "queries" does not exist at character 979
postgres-1   | 2025-05-05 10:15:35.433 UTC [64] STATEMENT:  SELECT queries.query AS queries_query, queries.updated_at AS queries_updated_at, queries.created_at AS queries_created_at, queries.id AS queries_id, queries.version AS queries_version, queries.org_id AS queries_org_id, queries.data_source_id AS queries_data_source_id, queries.latest_query_data_id AS queries_latest_query_data_id, queries.name AS queries_name, queries.description AS queries_description, queries.query_hash AS queries_query_hash, queries.api_key AS queries_api_key, queries.user_id AS queries_user_id, queries.last_modified_by_id AS queries_last_modified_by_id, queries.is_archived AS queries_is_archived, queries.is_draft AS queries_is_draft, queries.schedule AS queries_schedule, queries.schedule_failures AS queries_schedule_failures, queries.options AS queries_options, queries.search_vector AS queries_search_vector, queries.tags AS queries_tags, query_results_1.id AS query_results_1_id, query_results_1.retrieved_at AS query_results_1_retrieved_at 
postgres-1   | 	FROM queries LEFT OUTER JOIN query_results AS query_results_1 ON query_results_1.id = queries.latest_query_data_id 
postgres-1   | 	WHERE jsonb_typeof(queries.schedule) != 'null' ORDER BY queries.id
worker-1     | [2025-05-05 10:15:35,450][PID:32][ERROR][rq.worker] [Job 305c0cae0a196ae96915fd2b6f81001c435aad65]: exception raised while executing (redash.tasks.queries.maintenance.refresh_queries)
worker-1     | Traceback (most recent call last):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
worker-1     |     self.dialect.do_execute(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
worker-1     |     cursor.execute(statement, parameters)
worker-1     | psycopg2.errors.UndefinedTable: relation "queries" does not exist
worker-1     | LINE 2: FROM queries LEFT OUTER JOIN query_results AS query_results_...
worker-1     |              ^
worker-1     | 
worker-1     | 
worker-1     | The above exception was the direct cause of the following exception:
worker-1     | 
worker-1     | Traceback (most recent call last):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/worker.py", line 1431, in perform_job
worker-1     |     rv = job.perform()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/job.py", line 1280, in perform
worker-1     |     self._result = self._execute()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/job.py", line 1317, in _execute
worker-1     |     result = self.func(*self.args, **self.kwargs)
worker-1     |   File "/app/redash/tasks/queries/maintenance.py", line 87, in refresh_queries
worker-1     |     for query in models.Query.outdated_queries():
worker-1     |   File "/app/redash/models/__init__.py", line 597, in outdated_queries
worker-1     |     .all()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3373, in all
worker-1     |     return list(self)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3535, in __iter__
worker-1     |     return self._execute_and_instances(context)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3560, in _execute_and_instances
worker-1     |     result = conn.execute(querycontext.statement, self._params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
worker-1     |     return meth(self, multiparams, params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
worker-1     |     return connection._execute_clauseelement(self, multiparams, params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1124, in _execute_clauseelement
worker-1     |     ret = self._execute_context(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
worker-1     |     self._handle_dbapi_exception(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
worker-1     |     util.raise_(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
worker-1     |     raise exception
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
worker-1     |     self.dialect.do_execute(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
worker-1     |     cursor.execute(statement, parameters)
worker-1     | sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "queries" does not exist
worker-1     | LINE 2: FROM queries LEFT OUTER JOIN query_results AS query_results_...
worker-1     |              ^
worker-1     | 
worker-1     | [SQL: SELECT queries.query AS queries_query, queries.updated_at AS queries_updated_at, queries.created_at AS queries_created_at, queries.id AS queries_id, queries.version AS queries_version, queries.org_id AS queries_org_id, queries.data_source_id AS queries_data_source_id, queries.latest_query_data_id AS queries_latest_query_data_id, queries.name AS queries_name, queries.description AS queries_description, queries.query_hash AS queries_query_hash, queries.api_key AS queries_api_key, queries.user_id AS queries_user_id, queries.last_modified_by_id AS queries_last_modified_by_id, queries.is_archived AS queries_is_archived, queries.is_draft AS queries_is_draft, queries.schedule AS queries_schedule, queries.schedule_failures AS queries_schedule_failures, queries.options AS queries_options, queries.search_vector AS queries_search_vector, queries.tags AS queries_tags, query_results_1.id AS query_results_1_id, query_results_1.retrieved_at AS query_results_1_retrieved_at 
worker-1     | FROM queries LEFT OUTER JOIN query_results AS query_results_1 ON query_results_1.id = queries.latest_query_data_id 
worker-1     | WHERE jsonb_typeof(queries.schedule) != %(jsonb_typeof_1)s ORDER BY queries.id]
worker-1     | [parameters: {'jsonb_typeof_1': 'null'}]
worker-1     | (Background on this error at: http://sqlalche.me/e/13/f405)
worker-1     | 
worker-1     | [2025-05-05 10:15:35,459][PID:7][INFO][rq.worker] periodic: 526f2c7f55dfe92457914cd7df02cfffe4dec877
worker-1     | [2025-05-05 10:15:35,469][PID:33][INFO][root] Performing version check.
worker-1     | [2025-05-05 10:15:35,470][PID:33][INFO][root] Current version: 25.05.0-dev
postgres-1   | 2025-05-05 10:15:35.495 UTC [65] ERROR:  relation "organizations" does not exist at character 293
postgres-1   | 2025-05-05 10:15:35.495 UTC [65] STATEMENT:  SELECT organizations.updated_at AS organizations_updated_at, organizations.created_at AS organizations_created_at, organizations.id AS organizations_id, organizations.name AS organizations_name, organizations.slug AS organizations_slug, organizations.settings AS organizations_settings 
postgres-1   | 	FROM organizations 
postgres-1   | 	 LIMIT 1
worker-1     | [2025-05-05 10:15:35,507][PID:33][ERROR][rq.worker] [Job 526f2c7f55dfe92457914cd7df02cfffe4dec877]: exception raised while executing (redash.tasks.general.version_check)
worker-1     | Traceback (most recent call last):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
worker-1     |     self.dialect.do_execute(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
worker-1     |     cursor.execute(statement, parameters)
worker-1     | psycopg2.errors.UndefinedTable: relation "organizations" does not exist
worker-1     | LINE 2: FROM organizations 
worker-1     |              ^
worker-1     | 
worker-1     | 
worker-1     | The above exception was the direct cause of the following exception:
worker-1     | 
worker-1     | Traceback (most recent call last):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/worker.py", line 1431, in perform_job
worker-1     |     rv = job.perform()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/job.py", line 1280, in perform
worker-1     |     self._result = self._execute()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/job.py", line 1317, in _execute
worker-1     |     result = self.func(*self.args, **self.kwargs)
worker-1     |   File "/app/redash/tasks/general.py", line 34, in version_check
worker-1     |     run_version_check()
worker-1     |   File "/app/redash/version_check.py", line 67, in run_version_check
worker-1     |     if Organization.query.first().get_setting("beacon_consent"):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3429, in first
worker-1     |     ret = list(self[0:1])
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3203, in __getitem__
worker-1     |     return list(res)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3535, in __iter__
worker-1     |     return self._execute_and_instances(context)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3560, in _execute_and_instances
worker-1     |     result = conn.execute(querycontext.statement, self._params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
worker-1     |     return meth(self, multiparams, params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
worker-1     |     return connection._execute_clauseelement(self, multiparams, params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1124, in _execute_clauseelement
worker-1     |     ret = self._execute_context(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
worker-1     |     self._handle_dbapi_exception(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
worker-1     |     util.raise_(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
worker-1     |     raise exception
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
worker-1     |     self.dialect.do_execute(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
worker-1     |     cursor.execute(statement, parameters)
worker-1     | sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "organizations" does not exist
worker-1     | LINE 2: FROM organizations 
worker-1     |              ^
worker-1     | 
worker-1     | [SQL: SELECT organizations.updated_at AS organizations_updated_at, organizations.created_at AS organizations_created_at, organizations.id AS organizations_id, organizations.name AS organizations_name, organizations.slug AS organizations_slug, organizations.settings AS organizations_settings 
worker-1     | FROM organizations 
worker-1     |  LIMIT %(param_1)s]
worker-1     | [parameters: {'param_1': 1}]
worker-1     | (Background on this error at: http://sqlalche.me/e/13/f405)
worker-1     | 
worker-1     | [2025-05-05 10:15:35,518][PID:7][INFO][rq.worker] periodic: 52bcd40c254552539398db3cdb15055d4a9a536a
worker-1     | [2025-05-05 10:15:35,529][PID:34][INFO][rq.job.redash.tasks.queries.maintenance] job.func_name=redash.tasks.queries.maintenance.refresh_schemas job.id=52bcd40c254552539398db3cdb15055d4a9a536a task=refresh_schemas state=start
postgres-1   | 2025-05-05 10:15:35.556 UTC [66] ERROR:  relation "data_sources" does not exist at character 415
postgres-1   | 2025-05-05 10:15:35.556 UTC [66] STATEMENT:  SELECT data_sources.encrypted_options AS data_sources_encrypted_options, data_sources.id AS data_sources_id, data_sources.org_id AS data_sources_org_id, data_sources.name AS data_sources_name, data_sources.type AS data_sources_type, data_sources.queue_name AS data_sources_queue_name, data_sources.scheduled_queue_name AS data_sources_scheduled_queue_name, data_sources.created_at AS data_sources_created_at 
postgres-1   | 	FROM data_sources
worker-1     | [2025-05-05 10:15:35,565][PID:34][ERROR][rq.worker] [Job 52bcd40c254552539398db3cdb15055d4a9a536a]: exception raised while executing (redash.tasks.queries.maintenance.refresh_schemas)
worker-1     | Traceback (most recent call last):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
worker-1     |     self.dialect.do_execute(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
worker-1     |     cursor.execute(statement, parameters)
worker-1     | psycopg2.errors.UndefinedTable: relation "data_sources" does not exist
worker-1     | LINE 2: FROM data_sources
worker-1     |              ^
worker-1     | 
worker-1     | 
worker-1     | The above exception was the direct cause of the following exception:
worker-1     | 
worker-1     | Traceback (most recent call last):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/worker.py", line 1431, in perform_job
worker-1     |     rv = job.perform()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/job.py", line 1280, in perform
worker-1     |     self._result = self._execute()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/job.py", line 1317, in _execute
worker-1     |     result = self.func(*self.args, **self.kwargs)
worker-1     |   File "/app/redash/tasks/queries/maintenance.py", line 199, in refresh_schemas
worker-1     |     for ds in models.DataSource.query:
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3535, in __iter__
worker-1     |     return self._execute_and_instances(context)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3560, in _execute_and_instances
worker-1     |     result = conn.execute(querycontext.statement, self._params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
worker-1     |     return meth(self, multiparams, params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
worker-1     |     return connection._execute_clauseelement(self, multiparams, params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1124, in _execute_clauseelement
worker-1     |     ret = self._execute_context(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
worker-1     |     self._handle_dbapi_exception(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
worker-1     |     util.raise_(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
worker-1     |     raise exception
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
worker-1     |     self.dialect.do_execute(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
worker-1     |     cursor.execute(statement, parameters)
worker-1     | sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "data_sources" does not exist
worker-1     | LINE 2: FROM data_sources
worker-1     |              ^
worker-1     | 
worker-1     | [SQL: SELECT data_sources.encrypted_options AS data_sources_encrypted_options, data_sources.id AS data_sources_id, data_sources.org_id AS data_sources_org_id, data_sources.name AS data_sources_name, data_sources.type AS data_sources_type, data_sources.queue_name AS data_sources_queue_name, data_sources.scheduled_queue_name AS data_sources_scheduled_queue_name, data_sources.created_at AS data_sources_created_at 
worker-1     | FROM data_sources]
worker-1     | (Background on this error at: http://sqlalche.me/e/13/f405)
worker-1     | 
worker-1     | [2025-05-05 10:15:35,575][PID:7][INFO][rq.worker] periodic: 59a84668e68687338646f735965213c58e814b32
worker-1     | [2025-05-05 10:15:35,588][PID:35][INFO][rq.job.redash.tasks.queries.maintenance] job.func_name=redash.tasks.queries.maintenance.remove_ghost_locks job.id=59a84668e68687338646f735965213c58e814b32 Locks found: 0, Locks removed: 0
worker-1     | [2025-05-05 10:15:35,591][PID:35][INFO][rq.worker] periodic: Job OK (59a84668e68687338646f735965213c58e814b32)
worker-1     | [2025-05-05 10:15:35,591][PID:35][INFO][rq.worker] Result is kept for 600 seconds
worker-1     | [2025-05-05 10:15:35,601][PID:7][INFO][rq.worker] periodic: 75540cdf868e7873f5eec072177423b13b98dece
worker-1     | [2025-05-05 10:15:35,612][PID:36][INFO][rq.job.redash.tasks.queries.maintenance] job.func_name=redash.tasks.queries.maintenance.empty_schedules job.id=75540cdf868e7873f5eec072177423b13b98dece Deleting schedules of past scheduled queries...
postgres-1   | 2025-05-05 10:15:35.640 UTC [67] ERROR:  relation "queries" does not exist at character 875
postgres-1   | 2025-05-05 10:15:35.640 UTC [67] STATEMENT:  SELECT queries.query AS queries_query, queries.updated_at AS queries_updated_at, queries.created_at AS queries_created_at, queries.id AS queries_id, queries.version AS queries_version, queries.org_id AS queries_org_id, queries.data_source_id AS queries_data_source_id, queries.latest_query_data_id AS queries_latest_query_data_id, queries.name AS queries_name, queries.description AS queries_description, queries.query_hash AS queries_query_hash, queries.api_key AS queries_api_key, queries.user_id AS queries_user_id, queries.last_modified_by_id AS queries_last_modified_by_id, queries.is_archived AS queries_is_archived, queries.is_draft AS queries_is_draft, queries.schedule AS queries_schedule, queries.schedule_failures AS queries_schedule_failures, queries.options AS queries_options, queries.search_vector AS queries_search_vector, queries.tags AS queries_tags 
postgres-1   | 	FROM queries 
postgres-1   | 	WHERE jsonb_typeof(queries.schedule) != 'null' ORDER BY queries.id
worker-1     | [2025-05-05 10:15:35,653][PID:36][ERROR][rq.worker] [Job 75540cdf868e7873f5eec072177423b13b98dece]: exception raised while executing (redash.tasks.queries.maintenance.empty_schedules)
worker-1     | Traceback (most recent call last):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
worker-1     |     self.dialect.do_execute(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
worker-1     |     cursor.execute(statement, parameters)
worker-1     | psycopg2.errors.UndefinedTable: relation "queries" does not exist
worker-1     | LINE 2: FROM queries 
worker-1     |              ^
worker-1     | 
worker-1     | 
worker-1     | The above exception was the direct cause of the following exception:
worker-1     | 
worker-1     | Traceback (most recent call last):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/worker.py", line 1431, in perform_job
worker-1     |     rv = job.perform()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/job.py", line 1280, in perform
worker-1     |     self._result = self._execute()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/job.py", line 1317, in _execute
worker-1     |     result = self.func(*self.args, **self.kwargs)
worker-1     |   File "/app/redash/tasks/queries/maintenance.py", line 24, in empty_schedules
worker-1     |     queries = models.Query.past_scheduled_queries()
worker-1     |   File "/app/redash/models/__init__.py", line 583, in past_scheduled_queries
worker-1     |     return [
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3535, in __iter__
worker-1     |     return self._execute_and_instances(context)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3560, in _execute_and_instances
worker-1     |     result = conn.execute(querycontext.statement, self._params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
worker-1     |     return meth(self, multiparams, params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
worker-1     |     return connection._execute_clauseelement(self, multiparams, params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1124, in _execute_clauseelement
worker-1     |     ret = self._execute_context(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
worker-1     |     self._handle_dbapi_exception(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
worker-1     |     util.raise_(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
worker-1     |     raise exception
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
worker-1     |     self.dialect.do_execute(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
worker-1     |     cursor.execute(statement, parameters)
worker-1     | sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "queries" does not exist
worker-1     | LINE 2: FROM queries 
worker-1     |              ^
worker-1     | 
worker-1     | [SQL: SELECT queries.query AS queries_query, queries.updated_at AS queries_updated_at, queries.created_at AS queries_created_at, queries.id AS queries_id, queries.version AS queries_version, queries.org_id AS queries_org_id, queries.data_source_id AS queries_data_source_id, queries.latest_query_data_id AS queries_latest_query_data_id, queries.name AS queries_name, queries.description AS queries_description, queries.query_hash AS queries_query_hash, queries.api_key AS queries_api_key, queries.user_id AS queries_user_id, queries.last_modified_by_id AS queries_last_modified_by_id, queries.is_archived AS queries_is_archived, queries.is_draft AS queries_is_draft, queries.schedule AS queries_schedule, queries.schedule_failures AS queries_schedule_failures, queries.options AS queries_options, queries.search_vector AS queries_search_vector, queries.tags AS queries_tags 
worker-1     | FROM queries 
worker-1     | WHERE jsonb_typeof(queries.schedule) != %(jsonb_typeof_1)s ORDER BY queries.id]
worker-1     | [parameters: {'jsonb_typeof_1': 'null'}]
worker-1     | (Background on this error at: http://sqlalche.me/e/13/f405)
worker-1     | 
worker-1     | [2025-05-05 10:15:35,663][PID:7][INFO][rq.worker] periodic: 797f4f959c6c96c738efd445b17db75742db80a9
worker-1     | [2025-05-05 10:15:35,676][PID:37][INFO][rq.worker] periodic: Job OK (797f4f959c6c96c738efd445b17db75742db80a9)
worker-1     | [2025-05-05 10:15:35,677][PID:37][INFO][rq.worker] Result is kept for 7200 seconds
worker-1     | [2025-05-05 10:15:35,688][PID:7][INFO][rq.worker] periodic: e27209059575fcc17c527c47d0957cb21756e551
worker-1     | [2025-05-05 10:15:35,699][PID:38][INFO][rq.job.redash.tasks.queries.maintenance] job.func_name=redash.tasks.queries.maintenance.cleanup_query_results job.id=e27209059575fcc17c527c47d0957cb21756e551 Running query results clean up (removing maximum of 100 unused results, that are 7 days old or more)
postgres-1   | 2025-05-05 10:15:35.728 UTC [68] ERROR:  relation "query_results" does not exist at character 13
postgres-1   | 2025-05-05 10:15:35.728 UTC [68] STATEMENT:  DELETE FROM query_results WHERE query_results.id IN (SELECT query_results.id 
postgres-1   | 	FROM query_results LEFT OUTER JOIN queries ON query_results.id = queries.latest_query_data_id 
postgres-1   | 	WHERE queries.id IS NULL AND query_results.retrieved_at < '2025-04-28T10:15:35.699775'::timestamp 
postgres-1   | 	 LIMIT 100)
worker-1     | [2025-05-05 10:15:35,744][PID:38][ERROR][rq.worker] [Job e27209059575fcc17c527c47d0957cb21756e551]: exception raised while executing (redash.tasks.queries.maintenance.cleanup_query_results)
worker-1     | Traceback (most recent call last):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
worker-1     |     self.dialect.do_execute(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
worker-1     |     cursor.execute(statement, parameters)
worker-1     | psycopg2.errors.UndefinedTable: relation "query_results" does not exist
worker-1     | LINE 1: DELETE FROM query_results WHERE query_results.id IN (SELECT ...
worker-1     |                     ^
worker-1     | 
worker-1     | 
worker-1     | The above exception was the direct cause of the following exception:
worker-1     | 
worker-1     | Traceback (most recent call last):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/worker.py", line 1431, in perform_job
worker-1     |     rv = job.perform()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/job.py", line 1280, in perform
worker-1     |     self._result = self._execute()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/job.py", line 1317, in _execute
worker-1     |     result = self.func(*self.args, **self.kwargs)
worker-1     |   File "/app/redash/tasks/queries/maintenance.py", line 135, in cleanup_query_results
worker-1     |     deleted_count = models.QueryResult.query.filter(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3926, in delete
worker-1     |     delete_op.exec_()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/persistence.py", line 1697, in exec_
worker-1     |     self._do_exec()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/persistence.py", line 1930, in _do_exec
worker-1     |     self._execute_stmt(delete_stmt)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/persistence.py", line 1702, in _execute_stmt
worker-1     |     self.result = self.query._execute_crud(stmt, self.mapper)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3568, in _execute_crud
worker-1     |     return conn.execute(stmt, self._params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
worker-1     |     return meth(self, multiparams, params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
worker-1     |     return connection._execute_clauseelement(self, multiparams, params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1124, in _execute_clauseelement
worker-1     |     ret = self._execute_context(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
worker-1     |     self._handle_dbapi_exception(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
worker-1     |     util.raise_(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
worker-1     |     raise exception
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
worker-1     |     self.dialect.do_execute(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
worker-1     |     cursor.execute(statement, parameters)
worker-1     | sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "query_results" does not exist
worker-1     | LINE 1: DELETE FROM query_results WHERE query_results.id IN (SELECT ...
worker-1     |                     ^
worker-1     | 
worker-1     | [SQL: DELETE FROM query_results WHERE query_results.id IN (SELECT query_results.id 
worker-1     | FROM query_results LEFT OUTER JOIN queries ON query_results.id = queries.latest_query_data_id 
worker-1     | WHERE queries.id IS NULL AND query_results.retrieved_at < %(retrieved_at_1)s 
worker-1     |  LIMIT %(param_1)s)]
worker-1     | [parameters: {'retrieved_at_1': datetime.datetime(2025, 4, 28, 10, 15, 35, 699775), 'param_1': 100}]
worker-1     | (Background on this error at: http://sqlalche.me/e/13/f405)
worker-1     | 
server-1     | [2025-05-05 10:15:44,107][PID:25][INFO][xmlschema] Include schema from 'file:///usr/local/lib/python3.10/site-packages/xmlschema/schemas/XSD_1.1/xsd11-extra.xsd'
server-1     | [2025-05-05 10:15:44,960][PID:25][WARNING][werkzeug]  * Debugger is active!
server-1     | [2025-05-05 10:15:44,963][PID:25][INFO][werkzeug]  * Debugger PIN: 958-411-846
postgres-1   | 2025-05-05 10:15:53.746 UTC [77] FATAL:  role "root" does not exist
worker-1     | [2025-05-05 10:16:05,319][PID:7][INFO][rq.worker] periodic: 305c0cae0a196ae96915fd2b6f81001c435aad65
worker-1     | [2025-05-05 10:16:05,332][PID:39][INFO][rq.job.redash.tasks.queries.maintenance] job.func_name=redash.tasks.queries.maintenance.refresh_queries job.id=305c0cae0a196ae96915fd2b6f81001c435aad65 Refreshing queries...
postgres-1   | 2025-05-05 10:16:05.377 UTC [79] ERROR:  relation "queries" does not exist at character 979
postgres-1   | 2025-05-05 10:16:05.377 UTC [79] STATEMENT:  SELECT queries.query AS queries_query, queries.updated_at AS queries_updated_at, queries.created_at AS queries_created_at, queries.id AS queries_id, queries.version AS queries_version, queries.org_id AS queries_org_id, queries.data_source_id AS queries_data_source_id, queries.latest_query_data_id AS queries_latest_query_data_id, queries.name AS queries_name, queries.description AS queries_description, queries.query_hash AS queries_query_hash, queries.api_key AS queries_api_key, queries.user_id AS queries_user_id, queries.last_modified_by_id AS queries_last_modified_by_id, queries.is_archived AS queries_is_archived, queries.is_draft AS queries_is_draft, queries.schedule AS queries_schedule, queries.schedule_failures AS queries_schedule_failures, queries.options AS queries_options, queries.search_vector AS queries_search_vector, queries.tags AS queries_tags, query_results_1.id AS query_results_1_id, query_results_1.retrieved_at AS query_results_1_retrieved_at 
postgres-1   | 	FROM queries LEFT OUTER JOIN query_results AS query_results_1 ON query_results_1.id = queries.latest_query_data_id 
postgres-1   | 	WHERE jsonb_typeof(queries.schedule) != 'null' ORDER BY queries.id
worker-1     | [2025-05-05 10:16:05,389][PID:39][ERROR][rq.worker] [Job 305c0cae0a196ae96915fd2b6f81001c435aad65]: exception raised while executing (redash.tasks.queries.maintenance.refresh_queries)
worker-1     | Traceback (most recent call last):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
worker-1     |     self.dialect.do_execute(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
worker-1     |     cursor.execute(statement, parameters)
worker-1     | psycopg2.errors.UndefinedTable: relation "queries" does not exist
worker-1     | LINE 2: FROM queries LEFT OUTER JOIN query_results AS query_results_...
worker-1     |              ^
worker-1     | 
worker-1     | 
worker-1     | The above exception was the direct cause of the following exception:
worker-1     | 
worker-1     | Traceback (most recent call last):
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/worker.py", line 1431, in perform_job
worker-1     |     rv = job.perform()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/job.py", line 1280, in perform
worker-1     |     self._result = self._execute()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/rq/job.py", line 1317, in _execute
worker-1     |     result = self.func(*self.args, **self.kwargs)
worker-1     |   File "/app/redash/tasks/queries/maintenance.py", line 87, in refresh_queries
worker-1     |     for query in models.Query.outdated_queries():
worker-1     |   File "/app/redash/models/__init__.py", line 597, in outdated_queries
worker-1     |     .all()
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3373, in all
worker-1     |     return list(self)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3535, in __iter__
worker-1     |     return self._execute_and_instances(context)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3560, in _execute_and_instances
worker-1     |     result = conn.execute(querycontext.statement, self._params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
worker-1     |     return meth(self, multiparams, params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
worker-1     |     return connection._execute_clauseelement(self, multiparams, params)
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1124, in _execute_clauseelement
worker-1     |     ret = self._execute_context(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
worker-1     |     self._handle_dbapi_exception(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
worker-1     |     util.raise_(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
worker-1     |     raise exception
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
worker-1     |     self.dialect.do_execute(
worker-1     |   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
worker-1     |     cursor.execute(statement, parameters)
worker-1     | sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "queries" does not exist
worker-1     | LINE 2: FROM queries LEFT OUTER JOIN query_results AS query_results_...
worker-1     |              ^
worker-1     | 
worker-1     | [SQL: SELECT queries.query AS queries_query, queries.updated_at AS queries_updated_at, queries.created_at AS queries_created_at, queries.id AS queries_id, queries.version AS queries_version, queries.org_id AS queries_org_id, queries.data_source_id AS queries_data_source_id, queries.latest_query_data_id AS queries_latest_query_data_id, queries.name AS queries_name, queries.description AS queries_description, queries.query_hash AS queries_query_hash, queries.api_key AS queries_api_key, queries.user_id AS queries_user_id, queries.last_modified_by_id AS queries_last_modified_by_id, queries.is_archived AS queries_is_archived, queries.is_draft AS queries_is_draft, queries.schedule AS queries_schedule, queries.schedule_failures AS queries_schedule_failures, queries.options AS queries_options, queries.search_vector AS queries_search_vector, queries.tags AS queries_tags, query_results_1.id AS query_results_1_id, query_results_1.retrieved_at AS query_results_1_retrieved_at 
worker-1     | FROM queries LEFT OUTER JOIN query_results AS query_results_1 ON query_results_1.id = queries.latest_query_data_id 
worker-1     | WHERE jsonb_typeof(queries.schedule) != %(jsonb_typeof_1)s ORDER BY queries.id]
worker-1     | [parameters: {'jsonb_typeof_1': 'null'}]
worker-1     | (Background on this error at: http://sqlalche.me/e/13/f405)
worker-1     | 
% curl -v http://127.0.0.1:5001/login
*   Trying 127.0.0.1:5001...
* Connected to 127.0.0.1 (127.0.0.1) port 5001
> GET /login HTTP/1.1
> Host: 127.0.0.1:5001
> User-Agent: curl/8.7.1
> Accept: */*
> 
* Request completely sent off
< HTTP/1.1 500 INTERNAL SERVER ERROR
< Server: Werkzeug/2.3.8 Python/3.10.17
< Date: Mon, 05 May 2025 10:17:12 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 51143
< Connection: close
< 
<!doctype html>
<html lang=en>
  <head>
    <title>sqlalchemy.exc.InternalError: (psycopg2.errors.InFailedSqlTransaction) current transaction is aborted, commands ignored until end of transaction block

[SQL: SELECT organizations.updated_at AS organizations_updated_at, organizations.created_at AS organizations_created_at, organizations.id AS organizations_id, organizations.name AS organizations_name, organizations.slug AS organizations_slug, organizations.settings AS organizations_settings 
FROM organizations 
WHERE organizations.slug = %(slug_1)s 
 LIMIT %(param_1)s]
[parameters: {&#39;slug_1&#39;: &#39;default&#39;, &#39;param_1&#39;: 1}]
(Background on this error at: http://sqlalche.me/e/13/2j85)
 // Werkzeug Debugger</title>
    <link rel="stylesheet" href="?__debugger__=yes&amp;cmd=resource&amp;f=style.css">
    <link rel="shortcut icon"
        href="?__debugger__=yes&amp;cmd=resource&amp;f=console.png">
    <script src="?__debugger__=yes&amp;cmd=resource&amp;f=debugger.js"></script>
    <script>
      var CONSOLE_MODE = false,
          EVALEX = true,
          EVALEX_TRUSTED = false,
          SECRET = "F5nWZOJQKLXQffh5ifWq";
    </script>
  </head>
  <body style="background-color: #fff">
    <div class="debugger">
<h1>InternalError</h1>
<div class="detail">
  <p class="errormsg">sqlalchemy.exc.InternalError: (psycopg2.errors.InFailedSqlTransaction) current transaction is aborted, commands ignored until end of transaction block

[SQL: SELECT organizations.updated_at AS organizations_updated_at, organizations.created_at AS organizations_created_at, organizations.id AS organizations_id, organizations.name AS organizations_name, organizations.slug AS organizations_slug, organizations.settings AS organizations_settings 
FROM organizations 
WHERE organizations.slug = %(slug_1)s 
 LIMIT %(param_1)s]
[parameters: {&#39;slug_1&#39;: &#39;default&#39;, &#39;param_1&#39;: 1}]
(Background on this error at: http://sqlalche.me/e/13/2j85)
</p>
</div>
<h2 class="traceback">Traceback <em>(most recent call last)</em></h2>
<div class="traceback">
  <h3></h3>
  <ul><li><div class="frame" id="frame-139913997127568">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py"</cite>,
      line <em class="line">1276</em>,
      in <code class="function">_execute_context</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">                    </span>for fn in self.dialect.dispatch.do_execute:</pre>
<pre class="line before"><span class="ws">                        </span>if fn(cursor, statement, parameters, context):</pre>
<pre class="line before"><span class="ws">                            </span>evt_handled = True</pre>
<pre class="line before"><span class="ws">                            </span>break</pre>
<pre class="line before"><span class="ws">                </span>if not evt_handled:</pre>
<pre class="line current"><span class="ws">                    </span>self.dialect.do_execute(</pre>
<pre class="line after"><span class="ws">                        </span>cursor, statement, parameters, context</pre>
<pre class="line after"><span class="ws">                    </span>)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">            </span>if self._has_events or self.engine._has_events:</pre>
<pre class="line after"><span class="ws">                </span>self.dispatch.after_cursor_execute(</pre></div>
</div>

<li><div class="frame" id="frame-139913997127680">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py"</cite>,
      line <em class="line">608</em>,
      in <code class="function">do_execute</code></h4>
  <div class="source library"><pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">    </span>def do_executemany(self, cursor, statement, parameters, context=None):</pre>
<pre class="line before"><span class="ws">        </span>cursor.executemany(statement, parameters)</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">    </span>def do_execute(self, cursor, statement, parameters, context=None):</pre>
<pre class="line current"><span class="ws">        </span>cursor.execute(statement, parameters)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def do_execute_no_params(self, cursor, statement, context=None):</pre>
<pre class="line after"><span class="ws">        </span>cursor.execute(statement)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def is_disconnect(self, e, connection, cursor):</pre></div>
</div>

<li><div class="exc-divider">The above exception was the direct cause of the following exception:</div>
<li><div class="frame" id="frame-139914000103600">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/flask/app.py"</cite>,
      line <em class="line">2213</em>,
      in <code class="function">__call__</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">    </span>def __call__(self, environ: dict, start_response: t.Callable) -&gt; t.Any:</pre>
<pre class="line before"><span class="ws">        </span>&#34;&#34;&#34;The WSGI server calls the Flask application object as the</pre>
<pre class="line before"><span class="ws">        </span>WSGI application. This calls :meth:`wsgi_app`, which can be</pre>
<pre class="line before"><span class="ws">        </span>wrapped to apply middleware.</pre>
<pre class="line before"><span class="ws">        </span>&#34;&#34;&#34;</pre>
<pre class="line current"><span class="ws">        </span>return self.wsgi_app(environ, start_response)</pre></div>
</div>

<li><div class="frame" id="frame-139913998864160">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/werkzeug/middleware/proxy_fix.py"</cite>,
      line <em class="line">182</em>,
      in <code class="function">__call__</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">            </span>self.x_prefix, environ_get(&#34;HTTP_X_FORWARDED_PREFIX&#34;)</pre>
<pre class="line before"><span class="ws">        </span>)</pre>
<pre class="line before"><span class="ws">        </span>if x_prefix:</pre>
<pre class="line before"><span class="ws">            </span>environ[&#34;SCRIPT_NAME&#34;] = x_prefix</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line current"><span class="ws">        </span>return self.app(environ, start_response)</pre></div>
</div>

<li><div class="frame" id="frame-139913998867632">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/flask/app.py"</cite>,
      line <em class="line">2193</em>,
      in <code class="function">wsgi_app</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">            </span>try:</pre>
<pre class="line before"><span class="ws">                </span>ctx.push()</pre>
<pre class="line before"><span class="ws">                </span>response = self.full_dispatch_request()</pre>
<pre class="line before"><span class="ws">            </span>except Exception as e:</pre>
<pre class="line before"><span class="ws">                </span>error = e</pre>
<pre class="line current"><span class="ws">                </span>response = self.handle_exception(e)</pre>
<pre class="line after"><span class="ws">            </span>except:  # noqa: B001</pre>
<pre class="line after"><span class="ws">                </span>error = sys.exc_info()[1]</pre>
<pre class="line after"><span class="ws">                </span>raise</pre>
<pre class="line after"><span class="ws">            </span>return response(environ, start_response)</pre>
<pre class="line after"><span class="ws">        </span>finally:</pre></div>
</div>

<li><div class="frame" id="frame-139913998867744">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/flask_restful/__init__.py"</cite>,
      line <em class="line">298</em>,
      in <code class="function">error_router</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">        </span>if self._has_fr_route():</pre>
<pre class="line before"><span class="ws">            </span>try:</pre>
<pre class="line before"><span class="ws">                </span>return self.handle_error(e)</pre>
<pre class="line before"><span class="ws">            </span>except Exception:</pre>
<pre class="line before"><span class="ws">                </span>pass  # Fall through to original handler</pre>
<pre class="line current"><span class="ws">        </span>return original_handler(e)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def handle_error(self, e):</pre>
<pre class="line after"><span class="ws">        </span>&#34;&#34;&#34;Error handler for the API transforms a raised exception into a Flask</pre>
<pre class="line after"><span class="ws">        </span>response, with the appropriate HTTP status code and body.</pre>
<pre class="line after"><span class="ws"></span> </pre></div>
</div>

<li><div class="frame" id="frame-139914000469008">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/flask/app.py"</cite>,
      line <em class="line">2190</em>,
      in <code class="function">wsgi_app</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">        </span>ctx = self.request_context(environ)</pre>
<pre class="line before"><span class="ws">        </span>error: BaseException | None = None</pre>
<pre class="line before"><span class="ws">        </span>try:</pre>
<pre class="line before"><span class="ws">            </span>try:</pre>
<pre class="line before"><span class="ws">                </span>ctx.push()</pre>
<pre class="line current"><span class="ws">                </span>response = self.full_dispatch_request()</pre>
<pre class="line after"><span class="ws">            </span>except Exception as e:</pre>
<pre class="line after"><span class="ws">                </span>error = e</pre>
<pre class="line after"><span class="ws">                </span>response = self.handle_exception(e)</pre>
<pre class="line after"><span class="ws">            </span>except:  # noqa: B001</pre>
<pre class="line after"><span class="ws">                </span>error = sys.exc_info()[1]</pre></div>
</div>

<li><div class="frame" id="frame-139914000469120">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/flask/app.py"</cite>,
      line <em class="line">1486</em>,
      in <code class="function">full_dispatch_request</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">            </span>request_started.send(self, _async_wrapper=self.ensure_sync)</pre>
<pre class="line before"><span class="ws">            </span>rv = self.preprocess_request()</pre>
<pre class="line before"><span class="ws">            </span>if rv is None:</pre>
<pre class="line before"><span class="ws">                </span>rv = self.dispatch_request()</pre>
<pre class="line before"><span class="ws">        </span>except Exception as e:</pre>
<pre class="line current"><span class="ws">            </span>rv = self.handle_user_exception(e)</pre>
<pre class="line after"><span class="ws">        </span>return self.finalize_request(rv)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def finalize_request(</pre>
<pre class="line after"><span class="ws">        </span>self,</pre>
<pre class="line after"><span class="ws">        </span>rv: ft.ResponseReturnValue | HTTPException,</pre></div>
</div>

<li><div class="frame" id="frame-139914000469232">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/flask_restful/__init__.py"</cite>,
      line <em class="line">298</em>,
      in <code class="function">error_router</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">        </span>if self._has_fr_route():</pre>
<pre class="line before"><span class="ws">            </span>try:</pre>
<pre class="line before"><span class="ws">                </span>return self.handle_error(e)</pre>
<pre class="line before"><span class="ws">            </span>except Exception:</pre>
<pre class="line before"><span class="ws">                </span>pass  # Fall through to original handler</pre>
<pre class="line current"><span class="ws">        </span>return original_handler(e)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def handle_error(self, e):</pre>
<pre class="line after"><span class="ws">        </span>&#34;&#34;&#34;Error handler for the API transforms a raised exception into a Flask</pre>
<pre class="line after"><span class="ws">        </span>response, with the appropriate HTTP status code and body.</pre>
<pre class="line after"><span class="ws"></span> </pre></div>
</div>

<li><div class="frame" id="frame-139914000469344">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/flask/app.py"</cite>,
      line <em class="line">1484</em>,
      in <code class="function">full_dispatch_request</code></h4>
  <div class="source library"><pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">        </span>try:</pre>
<pre class="line before"><span class="ws">            </span>request_started.send(self, _async_wrapper=self.ensure_sync)</pre>
<pre class="line before"><span class="ws">            </span>rv = self.preprocess_request()</pre>
<pre class="line before"><span class="ws">            </span>if rv is None:</pre>
<pre class="line current"><span class="ws">                </span>rv = self.dispatch_request()</pre>
<pre class="line after"><span class="ws">        </span>except Exception as e:</pre>
<pre class="line after"><span class="ws">            </span>rv = self.handle_user_exception(e)</pre>
<pre class="line after"><span class="ws">        </span>return self.finalize_request(rv)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def finalize_request(</pre></div>
</div>

<li><div class="frame" id="frame-139914000469456">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/flask/app.py"</cite>,
      line <em class="line">1469</em>,
      in <code class="function">dispatch_request</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">            </span>and req.method == &#34;OPTIONS&#34;</pre>
<pre class="line before"><span class="ws">        </span>):</pre>
<pre class="line before"><span class="ws">            </span>return self.make_default_options_response()</pre>
<pre class="line before"><span class="ws">        </span># otherwise dispatch to the handler for that endpoint</pre>
<pre class="line before"><span class="ws">        </span>view_args: dict[str, t.Any] = req.view_args  # type: ignore[assignment]</pre>
<pre class="line current"><span class="ws">        </span>return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def full_dispatch_request(self) -&gt; Response:</pre>
<pre class="line after"><span class="ws">        </span>&#34;&#34;&#34;Dispatches the request and on top of that performs request</pre>
<pre class="line after"><span class="ws">        </span>pre and postprocessing as well as HTTP exception catching and</pre>
<pre class="line after"><span class="ws">        </span>error handling.</pre></div>
</div>

<li><div class="frame" id="frame-139914000469568">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/flask_limiter/extension.py"</cite>,
      line <em class="line">1191</em>,
      in <code class="function">__inner</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">                    </span>self.limiter._check_request_limit(</pre>
<pre class="line before"><span class="ws">                        </span>in_middleware=False, callable_name=name</pre>
<pre class="line before"><span class="ws">                    </span>)</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">                </span>return cast(</pre>
<pre class="line current"><span class="ws">                    </span>R, flask.current_app.ensure_sync(cast(Callable[P, R], obj))(*a, **k)</pre>
<pre class="line after"><span class="ws">                </span>)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">            </span># mark this wrapper as wrapped by a decorator from the limiter</pre>
<pre class="line after"><span class="ws">            </span># from which the decorator was created. This ensures that stacked</pre>
<pre class="line after"><span class="ws">            </span># decorations only trigger rate limiting from the inner most</pre></div>
</div>

<li><div class="frame" id="frame-139914000539472">
  <h4>File <cite class="filename">"/app/redash/handlers/authentication.py"</cite>,
      line <em class="line">216</em>,
      in <code class="function">login</code></h4>
  <div class="source "><pre class="line before"><span class="ws">        </span>org_slug=org_slug,</pre>
<pre class="line before"><span class="ws">        </span>next=next_path,</pre>
<pre class="line before"><span class="ws">        </span>email=request.form.get(&#34;email&#34;, &#34;&#34;),</pre>
<pre class="line before"><span class="ws">        </span>show_google_openid=settings.GOOGLE_OAUTH_ENABLED,</pre>
<pre class="line before"><span class="ws">        </span>google_auth_url=google_auth_url,</pre>
<pre class="line current"><span class="ws">        </span>show_password_login=current_org.get_setting(&#34;auth_password_login_enabled&#34;),</pre>
<pre class="line after"><span class="ws">        </span>show_saml_login=current_org.get_setting(&#34;auth_saml_enabled&#34;),</pre>
<pre class="line after"><span class="ws">        </span>show_remote_user_login=settings.REMOTE_USER_LOGIN_ENABLED,</pre>
<pre class="line after"><span class="ws">        </span>show_ldap_login=settings.LDAP_LOGIN_ENABLED,</pre>
<pre class="line after"><span class="ws">    </span>)</pre>
<pre class="line after"><span class="ws"></span> </pre></div>
</div>

<li><div class="frame" id="frame-139914000545184">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/werkzeug/local.py"</cite>,
      line <em class="line">311</em>,
      in <code class="function">__get__</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">                </span>return self.class_value</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">            </span>return self</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">        </span>try:</pre>
<pre class="line current"><span class="ws">            </span>obj = instance._get_current_object()</pre>
<pre class="line after"><span class="ws">        </span>except RuntimeError:</pre>
<pre class="line after"><span class="ws">            </span>if self.fallback is None:</pre>
<pre class="line after"><span class="ws">                </span>raise</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">            </span>fallback = self.fallback.__get__(instance, owner)</pre></div>
</div>

<li><div class="frame" id="frame-139914000636208">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/werkzeug/local.py"</cite>,
      line <em class="line">515</em>,
      in <code class="function">_get_current_object</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">                </span>return get_name(obj)</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">        </span>elif callable(local):</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">            </span>def _get_current_object() -&gt; T:</pre>
<pre class="line current"><span class="ws">                </span>return get_name(local())</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">        </span>else:</pre>
<pre class="line after"><span class="ws">            </span>raise TypeError(f&#34;Don&#39;t know how to proxy &#39;{type(local)}&#39;.&#34;)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">        </span>object.__setattr__(self, &#34;_LocalProxy__wrapped&#34;, local)</pre></div>
</div>

<li><div class="frame" id="frame-139914000636320">
  <h4>File <cite class="filename">"/app/redash/authentication/org_resolving.py"</cite>,
      line <em class="line">18</em>,
      in <code class="function">_get_current_org</code></h4>
  <div class="source "><pre class="line before"><span class="ws">    </span>if request.view_args is None:</pre>
<pre class="line before"><span class="ws">        </span>slug = g.get(&#34;org_slug&#34;, &#34;default&#34;)</pre>
<pre class="line before"><span class="ws">    </span>else:</pre>
<pre class="line before"><span class="ws">        </span>slug = request.view_args.get(&#34;org_slug&#34;, g.get(&#34;org_slug&#34;, &#34;default&#34;))</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line current"><span class="ws">    </span>g.org = Organization.get_by_slug(slug)</pre>
<pre class="line after"><span class="ws">    </span>logging.debug(&#34;Current organization: %s (slug: %s)&#34;, g.org, slug)</pre>
<pre class="line after"><span class="ws">    </span>return g.org</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"></span># TODO: move to authentication</pre></div>
</div>

<li><div class="frame" id="frame-139914000636432">
  <h4>File <cite class="filename">"/app/redash/models/organizations.py"</cite>,
      line <em class="line">32</em>,
      in <code class="function">get_by_slug</code></h4>
  <div class="source "><pre class="line before"><span class="ws">    </span>def __str__(self):</pre>
<pre class="line before"><span class="ws">        </span>return &#34;%s (%s)&#34; % (self.name, self.id)</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">    </span>@classmethod</pre>
<pre class="line before"><span class="ws">    </span>def get_by_slug(cls, slug):</pre>
<pre class="line current"><span class="ws">        </span>return cls.query.filter(cls.slug == slug).first()</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>@classmethod</pre>
<pre class="line after"><span class="ws">    </span>def get_by_id(cls, _id):</pre>
<pre class="line after"><span class="ws">        </span>return cls.query.filter(cls.id == _id).one()</pre>
<pre class="line after"><span class="ws"></span> </pre></div>
</div>

<li><div class="frame" id="frame-139914000638000">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py"</cite>,
      line <em class="line">3429</em>,
      in <code class="function">first</code></h4>
  <div class="source library"><pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">        </span>&#34;&#34;&#34;</pre>
<pre class="line before"><span class="ws">        </span>if self._statement is not None:</pre>
<pre class="line before"><span class="ws">            </span>ret = list(self)[0:1]</pre>
<pre class="line before"><span class="ws">        </span>else:</pre>
<pre class="line current"><span class="ws">            </span>ret = list(self[0:1])</pre>
<pre class="line after"><span class="ws">        </span>if len(ret) &gt; 0:</pre>
<pre class="line after"><span class="ws">            </span>return ret[0]</pre>
<pre class="line after"><span class="ws">        </span>else:</pre>
<pre class="line after"><span class="ws">            </span>return None</pre>
<pre class="line after"><span class="ws"></span> </pre></div>
</div>

<li><div class="frame" id="frame-139913998422800">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py"</cite>,
      line <em class="line">3203</em>,
      in <code class="function">__getitem__</code></h4>
  <div class="source library"><pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">            </span>res = self.slice(start, stop)</pre>
<pre class="line before"><span class="ws">            </span>if step is not None:</pre>
<pre class="line before"><span class="ws">                </span>return list(res)[None : None : item.step]</pre>
<pre class="line before"><span class="ws">            </span>else:</pre>
<pre class="line current"><span class="ws">                </span>return list(res)</pre>
<pre class="line after"><span class="ws">        </span>else:</pre>
<pre class="line after"><span class="ws">            </span>if item == -1:</pre>
<pre class="line after"><span class="ws">                </span>return list(self)[-1]</pre>
<pre class="line after"><span class="ws">            </span>else:</pre>
<pre class="line after"><span class="ws">                </span>return list(self[item : item + 1])[0]</pre></div>
</div>

<li><div class="frame" id="frame-139913998422912">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py"</cite>,
      line <em class="line">3535</em>,
      in <code class="function">__iter__</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">    </span>def __iter__(self):</pre>
<pre class="line before"><span class="ws">        </span>context = self._compile_context()</pre>
<pre class="line before"><span class="ws">        </span>context.statement.use_labels = True</pre>
<pre class="line before"><span class="ws">        </span>if self._autoflush and not self._populate_existing:</pre>
<pre class="line before"><span class="ws">            </span>self.session._autoflush()</pre>
<pre class="line current"><span class="ws">        </span>return self._execute_and_instances(context)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def __str__(self):</pre>
<pre class="line after"><span class="ws">        </span>context = self._compile_context()</pre>
<pre class="line after"><span class="ws">        </span>try:</pre>
<pre class="line after"><span class="ws">            </span>bind = (</pre></div>
</div>

<li><div class="frame" id="frame-139913998423024">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py"</cite>,
      line <em class="line">3560</em>,
      in <code class="function">_execute_and_instances</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">    </span>def _execute_and_instances(self, querycontext):</pre>
<pre class="line before"><span class="ws">        </span>conn = self._get_bind_args(</pre>
<pre class="line before"><span class="ws">            </span>querycontext, self._connection_from_session, close_with_result=True</pre>
<pre class="line before"><span class="ws">        </span>)</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line current"><span class="ws">        </span>result = conn.execute(querycontext.statement, self._params)</pre>
<pre class="line after"><span class="ws">        </span>return loading.instances(querycontext.query, result, querycontext)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def _execute_crud(self, stmt, mapper):</pre>
<pre class="line after"><span class="ws">        </span>conn = self._connection_from_session(</pre>
<pre class="line after"><span class="ws">            </span>mapper=mapper, clause=stmt, close_with_result=True</pre></div>
</div>

<li><div class="frame" id="frame-139913998423136">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py"</cite>,
      line <em class="line">1011</em>,
      in <code class="function">execute</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">        </span>except AttributeError as err:</pre>
<pre class="line before"><span class="ws">            </span>util.raise_(</pre>
<pre class="line before"><span class="ws">                </span>exc.ObjectNotExecutableError(object_), replace_context=err</pre>
<pre class="line before"><span class="ws">            </span>)</pre>
<pre class="line before"><span class="ws">        </span>else:</pre>
<pre class="line current"><span class="ws">            </span>return meth(self, multiparams, params)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def _execute_function(self, func, multiparams, params):</pre>
<pre class="line after"><span class="ws">        </span>&#34;&#34;&#34;Execute a sql.FunctionElement object.&#34;&#34;&#34;</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">        </span>return self._execute_clauseelement(func.select(), multiparams, params)</pre></div>
</div>

<li><div class="frame" id="frame-139913998623664">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py"</cite>,
      line <em class="line">298</em>,
      in <code class="function">_execute_on_connection</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">            </span># self</pre>
<pre class="line before"><span class="ws">            </span>return self</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">    </span>def _execute_on_connection(self, connection, multiparams, params):</pre>
<pre class="line before"><span class="ws">        </span>if self.supports_execution:</pre>
<pre class="line current"><span class="ws">            </span>return connection._execute_clauseelement(self, multiparams, params)</pre>
<pre class="line after"><span class="ws">        </span>else:</pre>
<pre class="line after"><span class="ws">            </span>raise exc.ObjectNotExecutableError(self)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def unique_params(self, *optionaldict, **kwargs):</pre>
<pre class="line after"><span class="ws">        </span>&#34;&#34;&#34;Return a copy with :func:`_expression.bindparam` elements</pre></div>
</div>

<li><div class="frame" id="frame-139913996876176">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py"</cite>,
      line <em class="line">1124</em>,
      in <code class="function">_execute_clauseelement</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">                </span>schema_translate_map=self.schema_for_object</pre>
<pre class="line before"><span class="ws">                </span>if not self.schema_for_object.is_default</pre>
<pre class="line before"><span class="ws">                </span>else None,</pre>
<pre class="line before"><span class="ws">            </span>)</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line current"><span class="ws">        </span>ret = self._execute_context(</pre>
<pre class="line after"><span class="ws">            </span>dialect,</pre>
<pre class="line after"><span class="ws">            </span>dialect.execution_ctx_cls._init_compiled,</pre>
<pre class="line after"><span class="ws">            </span>compiled_sql,</pre>
<pre class="line after"><span class="ws">            </span>distilled_params,</pre>
<pre class="line after"><span class="ws">            </span>compiled_sql,</pre></div>
</div>

<li><div class="frame" id="frame-139913996876288">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py"</cite>,
      line <em class="line">1316</em>,
      in <code class="function">_execute_context</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">                    </span># ResultProxy will close this Connection when no more</pre>
<pre class="line before"><span class="ws">                    </span># rows to fetch.</pre>
<pre class="line before"><span class="ws">                    </span>result._autoclose_connection = True</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">        </span>except BaseException as e:</pre>
<pre class="line current"><span class="ws">            </span>self._handle_dbapi_exception(</pre>
<pre class="line after"><span class="ws">                </span>e, statement, parameters, cursor, context</pre>
<pre class="line after"><span class="ws">            </span>)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">        </span>return result</pre>
<pre class="line after"><span class="ws"></span> </pre></div>
</div>

<li><div class="frame" id="frame-139913996876400">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py"</cite>,
      line <em class="line">1510</em>,
      in <code class="function">_handle_dbapi_exception</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">                    </span>self._autorollback()</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">            </span>if newraise:</pre>
<pre class="line before"><span class="ws">                </span>util.raise_(newraise, with_traceback=exc_info[2], from_=e)</pre>
<pre class="line before"><span class="ws">            </span>elif should_wrap:</pre>
<pre class="line current"><span class="ws">                </span>util.raise_(</pre>
<pre class="line after"><span class="ws">                    </span>sqlalchemy_exception, with_traceback=exc_info[2], from_=e</pre>
<pre class="line after"><span class="ws">                </span>)</pre>
<pre class="line after"><span class="ws">            </span>else:</pre>
<pre class="line after"><span class="ws">                </span>util.raise_(exc_info[1], with_traceback=exc_info[2])</pre>
<pre class="line after"><span class="ws"></span> </pre></div>
</div>

<li><div class="frame" id="frame-139913996876512">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py"</cite>,
      line <em class="line">182</em>,
      in <code class="function">raise_</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">            </span># intermediary exception does not change, but we can&#39;t figure</pre>
<pre class="line before"><span class="ws">            </span># that out.</pre>
<pre class="line before"><span class="ws">            </span>exception.__cause__ = replace_context</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">        </span>try:</pre>
<pre class="line current"><span class="ws">            </span>raise exception</pre>
<pre class="line after"><span class="ws">        </span>finally:</pre>
<pre class="line after"><span class="ws">            </span># credit to</pre>
<pre class="line after"><span class="ws">            </span># https://cosmicpercolator.com/2016/01/13/exception-leaks-in-python-2-and-3/</pre>
<pre class="line after"><span class="ws">            </span># as the __traceback__ object creates a cycle</pre>
<pre class="line after"><span class="ws">            </span>del exception, replace_context, from_, with_traceback</pre></div>
</div>

<li><div class="frame" id="frame-139913996964624">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py"</cite>,
      line <em class="line">1276</em>,
      in <code class="function">_execute_context</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">                    </span>for fn in self.dialect.dispatch.do_execute:</pre>
<pre class="line before"><span class="ws">                        </span>if fn(cursor, statement, parameters, context):</pre>
<pre class="line before"><span class="ws">                            </span>evt_handled = True</pre>
<pre class="line before"><span class="ws">                            </span>break</pre>
<pre class="line before"><span class="ws">                </span>if not evt_handled:</pre>
<pre class="line current"><span class="ws">                    </span>self.dialect.do_execute(</pre>
<pre class="line after"><span class="ws">                        </span>cursor, statement, parameters, context</pre>
<pre class="line after"><span class="ws">                    </span>)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">            </span>if self._has_events or self.engine._has_events:</pre>
<pre class="line after"><span class="ws">                </span>self.dispatch.after_cursor_execute(</pre></div>
</div>

<li><div class="frame" id="frame-139913996964736">
  <h4>File <cite class="filename">"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py"</cite>,
      line <em class="line">608</em>,
      in <code class="function">do_execute</code></h4>
  <div class="source library"><pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">    </span>def do_executemany(self, cursor, statement, parameters, context=None):</pre>
<pre class="line before"><span class="ws">        </span>cursor.executemany(statement, parameters)</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">    </span>def do_execute(self, cursor, statement, parameters, context=None):</pre>
<pre class="line current"><span class="ws">        </span>cursor.execute(statement, parameters)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def do_execute_no_params(self, cursor, statement, context=None):</pre>
<pre class="line after"><span class="ws">        </span>cursor.execute(statement)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def is_disconnect(self, e, connection, cursor):</pre></div>
</div>
</ul>
  <blockquote>sqlalchemy.exc.InternalError: (psycopg2.errors.InFailedSqlTransaction) current transaction is aborted, commands ignored until end of transaction block

[SQL: SELECT organizations.updated_at AS organizations_updated_at, organizations.created_at AS organizations_created_at, organizations.id AS organizations_id, organizations.name AS organizations_name, organizations.slug AS organizations_slug, organizations.settings AS organizations_settings 
FROM organizations 
WHERE organizations.slug = %(slug_1)s 
 LIMIT %(param_1)s]
[parameters: {&#39;slug_1&#39;: &#39;default&#39;, &#39;param_1&#39;: 1}]
(Background on this error at: http://sqlalche.me/e/13/2j85)
</blockquote>
</div>

<div class="plain">
    <p>
      This is the Copy/Paste friendly version of the traceback.
    </p>
    <textarea cols="50" rows="10" name="code" readonly>Traceback (most recent call last):
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py&#34;, line 1276, in _execute_context
    self.dialect.do_execute(
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py&#34;, line 608, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File &#34;/usr/local/lib/python3.10/site-packages/flask/app.py&#34;, line 2213, in __call__
    return self.wsgi_app(environ, start_response)
  File &#34;/usr/local/lib/python3.10/site-packages/werkzeug/middleware/proxy_fix.py&#34;, line 182, in __call__
    return self.app(environ, start_response)
  File &#34;/usr/local/lib/python3.10/site-packages/flask/app.py&#34;, line 2193, in wsgi_app
    response = self.handle_exception(e)
  File &#34;/usr/local/lib/python3.10/site-packages/flask_restful/__init__.py&#34;, line 298, in error_router
    return original_handler(e)
  File &#34;/usr/local/lib/python3.10/site-packages/flask/app.py&#34;, line 2190, in wsgi_app
    response = self.full_dispatch_request()
  File &#34;/usr/local/lib/python3.10/site-packages/flask/app.py&#34;, line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File &#34;/usr/local/lib/python3.10/site-packages/flask_restful/__init__.py&#34;, line 298, in error_router
    return original_handler(e)
  File &#34;/usr/local/lib/python3.10/site-packages/flask/app.py&#34;, line 1484, in full_dispatch_request
    rv = self.dispatch_request()
  File &#34;/usr/local/lib/python3.10/site-packages/flask/app.py&#34;, line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File &#34;/usr/local/lib/python3.10/site-packages/flask_limiter/extension.py&#34;, line 1191, in __inner
    R, flask.current_app.ensure_sync(cast(Callable[P, R], obj))(*a, **k)
  File &#34;/app/redash/handlers/authentication.py&#34;, line 216, in login
    show_password_login=current_org.get_setting(&#34;auth_password_login_enabled&#34;),
  File &#34;/usr/local/lib/python3.10/site-packages/werkzeug/local.py&#34;, line 311, in __get__
    obj = instance._get_current_object()
  File &#34;/usr/local/lib/python3.10/site-packages/werkzeug/local.py&#34;, line 515, in _get_current_object
    return get_name(local())
  File &#34;/app/redash/authentication/org_resolving.py&#34;, line 18, in _get_current_org
    g.org = Organization.get_by_slug(slug)
  File &#34;/app/redash/models/organizations.py&#34;, line 32, in get_by_slug
    return cls.query.filter(cls.slug == slug).first()
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py&#34;, line 3429, in first
    ret = list(self[0:1])
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py&#34;, line 3203, in __getitem__
    return list(res)
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py&#34;, line 3535, in __iter__
    return self._execute_and_instances(context)
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py&#34;, line 3560, in _execute_and_instances
    result = conn.execute(querycontext.statement, self._params)
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py&#34;, line 1011, in execute
    return meth(self, multiparams, params)
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py&#34;, line 298, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py&#34;, line 1124, in _execute_clauseelement
    ret = self._execute_context(
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py&#34;, line 1316, in _execute_context
    self._handle_dbapi_exception(
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py&#34;, line 1510, in _handle_dbapi_exception
    util.raise_(
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py&#34;, line 182, in raise_
    raise exception
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py&#34;, line 1276, in _execute_context
    self.dialect.do_execute(
  File &#34;/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py&#34;, line 608, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.InternalError: (psycopg2.errors.InFailedSqlTransaction) current transaction is aborted, commands ignored until end of transaction block

[SQL: SELECT organizations.updated_at AS organizations_updated_at, organizations.created_at AS organizations_created_at, organizations.id AS organizations_id, organizations.name AS organizations_name, organizations.slug AS organizations_slug, organizations.settings AS organizations_settings 
FROM organizations 
WHERE organizations.slug = %(slug_1)s 
 LIMIT %(param_1)s]
[parameters: {&#39;slug_1&#39;: &#39;default&#39;, &#39;param_1&#39;: 1}]
(Background on this error at: http://sqlalche.me/e/13/2j85)
</textarea>
</div>
<div class="explanation">
  The debugger caught an exception in your WSGI application.  You can now
  look at the traceback which led to the error.  <span class="nojavascript">
  If you enable JavaScript you can also use additional features such as code
  execution (if the evalex feature is enabled), automatic pasting of the
  exceptions and much more.</span>
</div>
      <div class="footer">
        Brought to you by <strong class="arthur">DON'T PANIC</strong>, your
        friendly Werkzeug powered traceback interpreter.
      </div>
    </div>

    <div class="pin-prompt">
      <div class="inner">
        <h3>Console Locked</h3>
        <p>
          The console is locked and needs to be unlocked by entering the PIN.
          You can find the PIN printed out on the standard output of your
          shell that runs the server.
        <form>
          <p>PIN:
            <input type=text name=pin size=14>
            <input type=submit name=btn value="Confirm Pin">
        </form>
      </div>
    </div>
  </body>
</html>

<!--

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 2213, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python3.10/site-packages/werkzeug/middleware/proxy_fix.py", line 182, in __call__
    return self.app(environ, start_response)
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 2193, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/local/lib/python3.10/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 2190, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.10/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1484, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/usr/local/lib/python3.10/site-packages/flask_limiter/extension.py", line 1191, in __inner
    R, flask.current_app.ensure_sync(cast(Callable[P, R], obj))(*a, **k)
  File "/app/redash/handlers/authentication.py", line 216, in login
    show_password_login=current_org.get_setting("auth_password_login_enabled"),
  File "/usr/local/lib/python3.10/site-packages/werkzeug/local.py", line 311, in __get__
    obj = instance._get_current_object()
  File "/usr/local/lib/python3.10/site-packages/werkzeug/local.py", line 515, in _get_current_object
    return get_name(local())
  File "/app/redash/authentication/org_resolving.py", line 18, in _get_current_org
    g.org = Organization.get_by_slug(slug)
  File "/app/redash/models/organizations.py", line 32, in get_by_slug
    return cls.query.filter(cls.slug == slug).first()
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3429, in first
    ret = list(self[0:1])
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3203, in __getitem__
    return list(res)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3535, in __iter__
    return self._execute_and_instances(context)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3560, in _execute_and_instances
    result = conn.execute(querycontext.statement, self._params)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
    return meth(self, multiparams, params)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1124, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.InternalError: (psycopg2.errors.InFailedSqlTransaction) current transaction is aborted, commands ignored until end of transaction block

[SQL: SELECT organizations.updated_at AS organizations_updated_at, organizations.created_at AS organizations_created_at, organizations.id AS organizations_id, organizations.name AS organizations_name, organizations.slug AS organizations_slug, organizations.settings AS organizations_settings 
FROM organizations 
WHERE organizations.slug = %(slug_1)s 
 LIMIT %(param_1)s]
[parameters: {'slug_1': 'default', 'param_1': 1}]
(Background on this error at: http://sqlalche.me/e/13/2j85)


-->
* Closing connection

Recommended solution didn't help

% docker-compose run --rm server manage db upgrade
[+] Creating 2/2
 ✔ Container redash-redis-1     Running                                                                                                                                                                                                             0.0s 
 ✔ Container redash-postgres-1  Running                                                                                                                                                                                                             0.0s 
[2025-05-05 10:19:37,433][PID:1][INFO][xmlschema] Include schema from 'file:///usr/local/lib/python3.10/site-packages/xmlschema/schemas/XSD_1.1/xsd11-extra.xsd'
[2025-05-05 10:19:38,482][PID:1][INFO][alembic.runtime.migration] Context impl PostgresqlImpl.
[2025-05-05 10:19:38,482][PID:1][INFO][alembic.runtime.migration] Will assume transactional DDL.
[2025-05-05 10:19:38,536][PID:1][INFO][alembic.runtime.migration] Running upgrade  -> 65fc9ede4746, Add is_draft status to queries and dashboards
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/manage.py", line 9, in <module>
    manager()
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/flask/cli.py", line 357, in decorator
    return __ctx.invoke(f, *args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/flask_migrate/cli.py", line 134, in upgrade
    _upgrade(directory, revision, sql, tag, x_arg)
  File "/usr/local/lib/python3.10/site-packages/flask_migrate/__init__.py", line 95, in wrapped
    f(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/flask_migrate/__init__.py", line 280, in upgrade
    command.upgrade(config, revision, sql=sql, tag=tag)
  File "/usr/local/lib/python3.10/site-packages/alembic/command.py", line 406, in upgrade
    script.run_env()
  File "/usr/local/lib/python3.10/site-packages/alembic/script/base.py", line 586, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/usr/local/lib/python3.10/site-packages/alembic/util/pyfiles.py", line 95, in load_python_file
    module = load_module_py(module_id, path)
  File "/usr/local/lib/python3.10/site-packages/alembic/util/pyfiles.py", line 113, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/app/migrations/env.py", line 93, in <module>
    run_migrations_online()
  File "/app/migrations/env.py", line 85, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "/usr/local/lib/python3.10/site-packages/alembic/runtime/environment.py", line 946, in run_migrations
    self.get_context().run_migrations(**kw)
  File "/usr/local/lib/python3.10/site-packages/alembic/runtime/migration.py", line 630, in run_migrations
    head_maintainer.update_to_step(step)
  File "/usr/local/lib/python3.10/site-packages/alembic/runtime/migration.py", line 827, in update_to_step
    self._insert_version(vers)
  File "/usr/local/lib/python3.10/site-packages/alembic/runtime/migration.py", line 763, in _insert_version
    self.context.impl._exec(
  File "/usr/local/lib/python3.10/site-packages/alembic/ddl/impl.py", line 247, in _exec
    return conn.execute(construct, params)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
    return meth(self, multiparams, params)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1124, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.InternalError: (psycopg2.errors.InFailedSqlTransaction) current transaction is aborted, commands ignored until end of transaction block

[SQL: INSERT INTO alembic_version (version_num) VALUES ('65fc9ede4746') RETURNING alembic_version.version_num]
(Background on this error at: http://sqlalche.me/e/13/2j85)

ongrid avatar May 05 '25 10:05 ongrid

Alembic upgrade leads to this on PG side:

postgres-1  | 2025-05-05 10:39:00.369 UTC [65] ERROR:  relation "queries" does not exist
postgres-1  | 2025-05-05 10:39:00.369 UTC [65] STATEMENT:  ALTER TABLE queries ADD COLUMN is_draft BOOLEAN
postgres-1  | 2025-05-05 10:39:00.371 UTC [65] ERROR:  current transaction is aborted, commands ignored until end of transaction block
postgres-1  | 2025-05-05 10:39:00.371 UTC [65] STATEMENT:  INSERT INTO alembic_version (version_num) VALUES ('65fc9ede4746') RETURNING alembic_version.version_num
postgres-1  | 2025-05-05 10:39:01.806 UTC [75] FATAL:  role "root" does not exist
postgres-1  | 2025-05-05 10:39:05.036 UTC [77] ERROR:  relation "queries" does not exist at character 979

ongrid avatar May 05 '25 10:05 ongrid

manage database create_tables helped:

docker-compose run --rm server manage database create_tables
[+] Creating 2/2
 ✔ Container redash-postgres-1  Running                                                                                                                                                                                                             0.0s 
 ✔ Container redash-redis-1     Running                                                                                                                                                                                                             0.0s 
[2025-05-05 10:44:36,007][PID:1][INFO][xmlschema] Resource 'XMLSchema.xsd' is already loaded
[2025-05-05 10:44:36,940][PID:1][INFO][alembic.runtime.migration] Context impl PostgresqlImpl.
[2025-05-05 10:44:36,941][PID:1][INFO][alembic.runtime.migration] Will assume transactional DDL.
[2025-05-05 10:44:36,969][PID:1][INFO][alembic.runtime.migration] Running stamp_revision  -> 9e8c841d1a30

ongrid avatar May 05 '25 10:05 ongrid

I believe this extra step should be added to the entrypoint script to check the tables and run migrations on the first run if they are missing.

ongrid avatar May 05 '25 11:05 ongrid

You can try below:

Get inside postgress container:

docker exec -it redash_postgres_1 psql -U postgres -d postgres

Once you are inside, you can execute below commands:

SELECT id, settings FROM organizations;

ALTER TABLE organizations ALTER COLUMN settings TYPE jsonb USING settings::jsonb;

UPDATE organizations SET settings = settings->'settings' WHERE settings ? 'settings';

ankom2007 avatar Jul 02 '25 08:07 ankom2007

It is just a nightmare, two days in a row I can not run this Redash, docs not helping, endless errors in migrations for absent tables, orgs, users… unbelievable

bora89 avatar Jul 02 '25 08:07 bora89

manage database create_tables helped:

docker-compose run --rm server manage database create_tables
[+] Creating 2/2
 ✔ Container redash-postgres-1  Running                                                                                                                                                                                                             0.0s 
 ✔ Container redash-redis-1     Running                                                                                                                                                                                                             0.0s 
[2025-05-05 10:44:36,007][PID:1][INFO][xmlschema] Resource 'XMLSchema.xsd' is already loaded
[2025-05-05 10:44:36,940][PID:1][INFO][alembic.runtime.migration] Context impl PostgresqlImpl.
[2025-05-05 10:44:36,941][PID:1][INFO][alembic.runtime.migration] Will assume transactional DDL.
[2025-05-05 10:44:36,969][PID:1][INFO][alembic.runtime.migration] Running stamp_revision  -> 9e8c841d1a30

No way, three days of endless errors and that helped… why it did not execute in the first place?

bora89 avatar Jul 04 '25 13:07 bora89

It's actually documented in the guide: https://github.com/getredash/redash/wiki/Local-development-setup. The make create_database command basically runs this same thing (via some indirection).

I wonder if we need to make it clearer?

I'm closing the issue, but further comments are welcome as it's obvious that something isn't clear.

arikfr avatar Jul 15 '25 11:07 arikfr