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

Rails 8 + Kamal 2 配置Solid Queue独立服务器作业遇阻

解决Kamal作业容器找不到Solid Queue表的问题

问题根源

作业容器默认使用了SQLite数据库(而非你的生产数据库),而Solid Queue的表仅存在于生产数据库中,因此启动时提示找不到solid_queue_recurring_tasks表。

修复步骤

  • 补全数据库环境变量
    你的deploy.yml仅配置了DB_HOST,缺少生产数据库必需的其他配置项,导致作业容器 fallback 到SQLite。更新env配置,添加完整的数据库连接信息:

    env:
      clear:
        DB_HOST: DB_HOST
        DB_NAME: myapp_production
        DB_ADAPTER: postgresql # 替换为你的数据库类型,如mysql2
        DB_USER: 你的数据库用户名
      secret:
        - RAILS_MASTER_KEY
        - DB_PASSWORD # 敏感密码存放在.kamal/secrets中
    
  • 开放作业Droplet的数据库访问权限
    在数据库服务器的防火墙/安全组中,允许作业Droplet的IP访问对应的数据库端口(如PostgreSQL用5432,MySQL用3306),确保作业容器能连接到生产数据库。

  • 验证数据库迁移状态
    确认solid_queue_recurring_tasks表已存在于生产数据库:

    1. 执行kamal dbc进入数据库控制台
    2. 运行查询语句:SELECT * FROM solid_queue_recurring_tasks LIMIT 1;
      如果表不存在,执行kamal app exec "bin/rails db:migrate"完成迁移。
  • 检查bin/jobs脚本
    确保脚本正确启动Solid Queue Worker,且未覆盖数据库配置,示例脚本如下:

    #!/usr/bin/env bash
    exec bundle exec solid_queue start
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:12:39