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

Rails应用从Sqlite3转PostgreSQL时rake db:create报错求助

解决Rails切换PostgreSQL时的pg gem版本冲突问题

嘿,这个问题我之前也碰到过,核心就是pg gem的版本不兼容。从错误日志里能明确看到关键提示:

can't activate pg (~> 0.18), already activated pg-0.17.1. Make sure all dependencies are added to Gemfile.

你的ActiveRecord需要至少~>0.18版本的pg,但当前环境里激活的是旧版0.17.1,导致数据库适配器无法正常加载。按照下面的步骤就能解决:

  • 第一步:锁定pg gem的正确版本
    打开你的Gemfile,把pg的配置行修改为符合ActiveRecord要求的版本,比如:

    gem 'pg', '~> 0.18' # 也可以用更高的稳定版,比如 '>= 0.18'
    

    如果你不确定对应Rails版本适配的pg版本,~>0.18对大多数需要部署到Heroku的Rails版本都适用。

  • 第二步:更新pg gem并重新安装依赖
    先卸载旧版本的pg gem(可选,但能彻底避免版本冲突):

    gem uninstall pg
    

    执行后会提示你选择要卸载的版本,选0.17.1即可。

    接着运行bundle命令更新pg并重新安装所有依赖:

    bundle update pg
    bundle install
    
  • 第三步:重新尝试数据库操作
    现在再执行创建和迁移命令:

    rake db:create
    rake db:migrate
    

    应该就能正常运行了。

另外补充两个小提示:

  1. 确保本地已经安装并启动了PostgreSQL服务,不然即使gem没问题,创建数据库也会失败。
  2. 部署到Heroku前,记得把Gemfile.lock也提交到Git,Heroku会根据这个文件安装对应版本的依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:11:54