【问题标题】:How to handle Ruby on Rails error: "Please install the postgresql adapter: `gem install activerecord-postgresql-adapter'"如何处理 Ruby on Rails 错误:“请安装 postgresql 适配器:`gem install activerecord-postgresql-adapter'”
【发布时间】:2009-11-02 23:25:33
【问题描述】:

运行使用 ActiveRecord 框架的 Ruby on Rails (RoR) 应用程序或 Ruby 代码,您会收到错误消息:

请安装 postgresql 适配器: gem install activerecord-postgresql-adapter

尝试运行:

gem install activerecord-postgresql-adapter

也失败了,让你不知所措。

【问题讨论】:

  • 您可以阅读the following post 了解一下。
  • 我尝试关注该帖子的尝试已包含在我的原始答案中,因为它们对我不起作用。

标签: ruby-on-rails ruby postgresql activerecord rubygems


【解决方案1】:

问题不在于任何人写的。 问题是 postgresql 数据库适配器的名称是“postgresql”,而不是“postgres”,尽管 GEM 的名称是“pg”。

database.yml 文件中的定义应该包括

  adapter: postgresql

【讨论】:

  • 这是很容易解决的问题吗?我的意思是这样可以更正名称并提供适当的错误消息?
  • 请安装 postgres 适配器:gem install activerecord-postgres-adapter
  • 如果我只使用 ruby​​ 而不是 ror 怎么办?我找不到任何 datbase.yml 文件
  • @boulder_ruby - 错误:在任何存储库中都找不到有效的 gem 'activerecord-postgres-adapter' (>= 0)。
【解决方案2】:

这是我从 Heroku 得到的答案,它对我有用(在尝试了不同的 pg gem、适配器和其他 10 篇关于此的帖子的所有其他内容之后)

1) 将行:gem 'pg' 添加到您的 Gemfile。

2) 运行命令 bundle install 将 gem 安装到你的包中。

3) 暂存 Gemfile 和 Gemfile.lock 更改: git add Gemfile Gemfile.lock

4) 提交更改: git commit -m "Install the pg gem"

5) 重新部署到heroku:git push heroku master

【讨论】:

    【解决方案3】:

    这意味着您没有安装新的“pg”postgresql 库。这很容易通过以下方式解决:

    sudo gem install pg
    

    我(Dov)在网上找到了其他解决方案,这些解决方案描述了设置 GEM_HOME 并将 ~/.gem/ruby/vers/bin 添加到您的 PATH 中,但它们不起作用。上述解决方案由 Mark Mansour 在他的博客 State of Flux 上: http://stateofflux.com/2008/7/13/activerecord-postgresql-adapter-in-rails-2-1/

    【讨论】:

    • 这个对我不起作用...仍在寻找解决方案。
    • 我不推荐使用 sudo 安装 gems。更好的是,使用 Bundler。
    【解决方案4】:

    还有一个更深的隐藏条件也会导致此错误。

    如果您设置了本地环境变量 DATABASE_URL=postgres://mehmehmeh,那么某些 gem(我怀疑 Heroku)会导致应用认为 Postgres 是必需的,即使它不在您的配置中.杀死那个环境变量,你应该没问题。

    【讨论】:

    • 这是我的问题。棘手!
    • 对我也非常有用。我没有在我的项目中的任何地方使用 pstgresql,但是一个旧的 DATABASE_URL 环境变量在那里隐藏并导致了这个。
    • 非常感谢。我一直面临这个问题,直到最后 3 天。终于找到了你@chad的答案。再次感谢。
    • 我收到一个关于 Active Record 'http' 适配器的异常错误,这是由我的.env 中的此环境变量引起的。很高兴我终于找到了这篇文章!
    【解决方案5】:

    检查database.yml 环境db 是否正确。如果是 postgresql,您可能需要将其更改为引用 mysql2 或您在给定环境中使用的任何 db。

    【讨论】:

      【解决方案6】:

      你可以试试这个

      在 debian 上(挤压):

      aptitude install libdbd-pg-ruby
      

      【讨论】:

        【解决方案7】:

        sudo apt-get install ruby​​1.8-dev

        那么……

        gem 安装 pg

        为我工作!

        【讨论】:

        • 如果我们要使用 1.9.2 怎么办?
        【解决方案8】:

        我对@9​​87654321@ 上的 Ruby + PostgreSQL 数据库驱动程序的当前状态做了一些总结;我认为sudo gem install pg 可能是您想要的。

        【讨论】:

        • 谢谢。我一直在寻找不同驱动程序之间的区别。信息不像我想象的那么容易找到。
        【解决方案9】:

        在尝试不同的搜索结果时,我安装了一堆。最终让我的环境停止抱怨此消息的原因是:“请安装 postgresql 适配器:gem install activerecord-postgresql-adapter”:

        • 我删除了与适配器相关的所有宝石,例如: sudo gem 卸载 activerecord-jdbc-adapter; sudo gem 卸载 activerecord-jdbcpostgresql-adapter; sudo gem 卸载 activerecord-postgresql-adapter; sudo gem 卸载 jdbc-postgres;

        • 我还在我的 Gemfile 中删除了对适配器的引用,如下所示: gem 'activerecord-jdbcpostgresql-适配器'

        • 只安装 pg (0.15.1)(要检查 pg 是否存在,请执行“gem list”)

        然后运行“rake db:create”就可以了。所以,我猜 pg 是最新的并且有效。但是,当周围有其他损坏的适配器 gem 时,它不会被使用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-25
          • 1970-01-01
          • 2013-06-03
          • 2013-03-06
          相关资源
          最近更新 更多