升级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后,确保
pggem版本与当前Rails版本匹配,在Gemfile中锁定合适版本:
执行gem 'pg', '~> 1.5' # Rails 7.x建议适配pg 1.4+版本bundle install后重新部署。
内容的提问来源于stack exchange,提问作者Ken
相关产品推荐
相关产品推荐

