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

升级Heroku-22后Ruby应用500错误及users表缺失问题求助

解决Heroku-22栈升级后ActiveRecord找不到users表的问题

排查与修复步骤

  • 确认数据库迁移是否执行
    升级栈后可能未自动执行迁移,直接运行:

    heroku run rails db:migrate
    

    若出现版本不匹配提示,先对比本地与远程的schema版本:

    heroku run rails db:version
    

    查看本地db/schema.rb里的ActiveRecord::Schema[xxx].define版本号,若不一致,先在本地同步迁移记录后重新部署,再执行迁移。

  • 检查数据库连接配置
    验证DATABASE_URL是否指向正确的数据库实例:

    heroku config:get DATABASE_URL
    

    若配置错误或指向旧数据库,重新创建或关联正确的Postgres实例:

    heroku addons:create heroku-postgresql:hobby-dev
    

    (根据业务需求选择对应数据库计划)

  • 直接验证数据库表存在性
    连接到Heroku数据库查看表列表:

    heroku pg:psql
    

    执行\dt命令确认users表是否存在。若不存在,可从本地schema导入(注意:此操作会清空现有数据):

    heroku run rails db:schema:load
    
  • 核对Rails环境配置
    确认生产环境设置正确:

    heroku config:get RAILS_ENV
    

    若不是production,执行以下命令修正:

    heroku config:set RAILS_ENV=production
    

额外注意事项

  • Heroku-22默认搭载Postgres 14+版本,旧迁移文件可能存在语法兼容问题,检查迁移代码中是否有过时写法(如timestamps(null: false)的适配问题),调整后重新部署执行迁移。
  • 升级Ruby和Rails后,确保pg gem版本与当前Rails版本匹配,在Gemfile中锁定合适版本:
    gem 'pg', '~> 1.5' # Rails 7.x建议适配pg 1.4+版本
    
    执行bundle install后重新部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:15:34