heroku运行rake db:create失败,找不到gem' pg ...,但数据库是mysql2(不是postgresql)

时间:2014-04-08 21:37:30

标签: ruby heroku deployment redmine

运行heroku run rake db:create时收到以下错误:

Running `rake db:create` attached to terminal... up, run.6027
Could not find gem 'pg (>= 0.11.0) ruby' in the gems available on this machine.
Run `bundle install` to install missing gems.

在config / database.yml中我使用的是默认的mysql2数据库:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  ...
development:
  adapter: mysql2
  ...
test:
  adapter: mysql2
  ...

所以我猜'pg(> = 0.11.0)ruby'不需要安装。我错了吗?

我正在使用Windows XP。这是我第一次使用Ruby。


更新1

我忘了说bundle install没有错误地正确完成。

另一方面,Gemfile具有以下代码:

adapters.each do |adapter|
  case adapter
  when 'mysql2'
    gem "mysql2", "~> 0.3.11", :platforms => [:mri, :mingw]
    gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
  ...
  when /postgresql/
    gem "pg", ">= 0.11.0", :platforms => [:mri, :mingw]
    gem "activerecord-jdbcpostgresql-adapter", :platforms => :jruby
  ...

所以再一次,我想在执行命令when /postgresql/时永远不应该进入heroku run rake db:create。我是对的吗?

2 个答案:

答案 0 :(得分:1)

在为数据库创建运行rake任务并完成所有gem依赖项之前,您需要执行 bundle install 。即使您使用的是mysql而不是postgres,这也是必需的,因为' pg gem'在Gemfile中指定,您必须通过运行 bundle install 命令确保Gemfile中的所有gem依赖项都可供您的应用程序使用。

在您使用mysql的情况下,您不需要使用' pg gem'并可以在Gemfile中删除或评论它。

答案 1 :(得分:1)

参见上面的讨论......这是一个Heroku应用程序,它需要配置一个数据库,或者它会尝试强制Postgres作为依赖来帮助你。