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应该就能正常运行了。
另外补充两个小提示:
- 确保本地已经安装并启动了PostgreSQL服务,不然即使gem没问题,创建数据库也会失败。
- 部署到Heroku前,记得把
Gemfile.lock也提交到Git,Heroku会根据这个文件安装对应版本的依赖。
内容的提问来源于stack exchange,提问作者Ins0maniac
相关产品推荐
相关产品推荐

