求助:Rails未识别到已升级的PostgreSQL当前版本
PostgreSQL版本在Rails中不更新的排查方案
检查Rails数据库配置
打开项目根目录下的config/database.yml,确认配置的host、port是否指向PostgreSQL 13的实例。如果旧版本PostgreSQL仍在运行,可能会占用默认的5432端口,导致Rails连接到旧实例。同时确认database字段对应的是新实例中创建的数据库,而非旧实例的库。管理PostgreSQL服务状态
停止旧版本服务:brew services stop postgresql@10启动新版本服务:
brew services start postgresql@13用
brew services list验证状态,确保postgresql@13处于started状态,旧版本处于stopped。重新编译pg gem
Rails依赖的pg gem可能绑定了旧版本PostgreSQL的库,需要重新编译:- 卸载现有pg gem:
gem uninstall pg - 基于新版本PostgreSQL重新安装:
gem install pg -- --with-pg-config=/usr/local/opt/postgresql@13/bin/pg_config - 如果使用Bundler,先配置编译参数再安装:
bundle config build.pg --with-pg-config=/usr/local/opt/postgresql@13/bin/pg_config bundle install
- 卸载现有pg gem:
确认环境变量优先级
在终端执行which psql,确保输出是/usr/local/opt/postgresql@13/bin/psql。检查~/.zshrc中的PATH设置,确保新版本的bin目录放在最前面:export PATH="/usr/local/opt/postgresql@13/bin:$PATH"避免旧版本的路径覆盖新路径。
重启Rails相关进程
如果项目使用了Puma、Unicorn等应用服务器,需要完全停止并重启这些进程,确保它们加载更新后的环境变量和pg gem。
内容的提问来源于stack exchange,提问作者martin
相关产品推荐
相关产品推荐

