You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

群晖NAS上Redash+Redis+Postgres容器编排:数据库表缺失问题

Redash Scheduler报relation "queries"不存在的解决方法

问题背景

刚接触容器技术,在群晖NAS用Container Manager完成了Redash、Redis、Postgres的容器编排配置,且验证过Postgres可通过同容器内的adminer正常登录,但运行时scheduler服务持续报错:

ProgrammingError: (psycopg2.ProgrammingError) relation “queries” does not exist

查询得知需要执行docker-compose run --rm server create_db命令创建Redash数据库表,但使用的是群晖Container Manager而非原生Docker,想问是否需要额外挂载卷才能执行该初始化命令?当前的docker-compose.yml配置如下:

version: "3.1"

x-redash-service: &redash-service
  image: redash/redash:latest
  depends_on:
    - db
    - cache
  restart: always

x-redash-env: &redash-env
  PYTHONUNBUFFERED: 0
  REDASH_LOG_LEVEL: "INFO"
  REDASH_REDIS_URL: "redis://cache:6379/0"
  REDASH_DATABASE_URL: "postgresql://postgres:postgresPassword@db/postgres"

services:
  redash:
    <<: *redash-service
    command: server
    ports:
      - "5003:5000"
    environment:
      <<: *redash-env
      REDASH_WEB_WORKERS: 4

  adhoc_worker:
    <<: *redash-service
    command: worker
    environment:
      <<: *redash-env
      QUEUES: "queries"
      WORKERS_COUNT: 2

  scheduler:
    <<: *redash-service
    command: scheduler
    environment:
      <<: *redash-env
      QUEUES: "celery"
      WORKERS_COUNT: 1

  scheduled_worker:
    <<: *redash-service
    command: worker
    environment:
      <<: *redash-env
      QUEUES: "scheduled_queries,schemas"
      WORKERS_COUNT: 1

  db:
    image: postgres:latest
    restart: always
    ports:
      - "5433:5432"
    volumes:
      - ./postgres/data:/var/lib/postgresql/data:rw
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgresPassword
      POSTGRES_DB: postgresDatabase
    #command: "create_db"

  nginx:
    image: redash/nginx:latest
    ports:
      - "2501:80"
    depends_on:
      - redash
    restart: always

  cache:
    image: redis:latest
    restart: always
    depends_on:
      - db
    ports:
      - "6379:6379"
    volumes:
      - ./redis/data:/data:rw

解决步骤

1. 先修正数据库连接的致命错误

你的配置里存在一个关键矛盾:Postgres服务的POSTGRES_DB设置为postgresDatabase,但Redash的REDASH_DATABASE_URL指定的数据库是postgres。这会导致Redash连接到错误的数据库,就算执行create_db命令,表也会建在默认的postgres库中,而非你指定的postgresDatabase,自然会出现找不到queries表的错误。

需要把x-redash-env中的数据库URL修改为:

REDASH_DATABASE_URL: "postgresql://postgres:postgresPassword@db/postgresDatabase"

2. 执行初始化命令无需额外挂载卷

群晖Container Manager本质是基于Docker Compose封装的工具,只要你的docker-compose.yml已经正确配置了Redash的环境变量(尤其是数据库连接信息),直接执行初始化命令即可,不需要额外挂载卷。

3. 在群晖中执行初始化命令的两种方式

方式一:通过Container Manager终端操作

  • 打开群晖Container Manager,找到你的Redash项目,进入「终端」页面
  • 选择redash服务,在终端窗口直接输入:
    create_db
    
    或者执行完整命令:
    docker-compose run --rm server create_db
    

方式二:SSH登录群晖执行命令

  • 开启群晖SSH功能,用终端工具(如Windows终端、Putty)登录到群晖
  • 切换到docker-compose.yml所在的目录(比如/volume1/docker/redash)
  • 执行命令:
    docker-compose run --rm server create_db
    

4. 重启服务验证

执行完初始化命令后,重启所有Redash相关服务(redash、scheduler、adhoc_worker、scheduled_worker),此时scheduler服务就不会再报找不到queries表的错误了。

内容的提问来源于stack exchange,提问作者Daniel Watson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:53:21