RoR中的heroku部署错误(Github部署)我应该如何处理postgresql错误?

时间:2017-06-06 06:16:59

标签: ruby-on-rails heroku github sqlite

我将小应用程序从C9部署到github然后再到Heroku! 在heroku部署仪表板中,它表示已经部署了,但是当我打开应用程序时,它只是给了我错误消息。 所以我搜索了很多Stackoverflow的答案,并按照Heroku网站(https://devcenter.heroku.com/articles/sqlite3)的指示删除了sqlite3并安装了gem pg。

我确实取代了gem' sqlite3'宝石''然后安装'捆绑安装',然后

它说我需要转换我的config / database.yml文件,所以我将其替换为:

development:
  adapter: postgresql
  database: my_database_development
  pool: 5
  timeout: 5000
test:
  adapter: postgresql
  database: my_database_test
  pool: 5
  timeout: 5000

production:
  adapter: postgresql
  database: my_database_production
  pool: 5
  timeout: 5000

然后当我回到c9 bash并键入' rake db:create', 它告诉我

**rake aborted!
ActiveRecord::NoDatabaseError: FATAL:  database "my_database_development" does not exist**

这个错误。

有人说'捆绑exec rake db:setup'会工作,所以我做了,然后它显示

**Couldn't create database for {"adapter"=>"postgresql", "database"=>"my_database_test", "pool"=>5, "timeout"=>5000}
/home/ubuntu/workspace/db/schema.rb doesn't exist yet. Run `rake db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter /home/ubuntu/workspace/config/application.rb to limit the frameworks that will be loaded.**

当我输入' rake db:migrate'时,我不知道如何对此消息做出反应....它再次显示了这一点。

rake aborted!
ActiveRecord::NoDatabaseError: FATAL:  database "my_database_development" does not exist

我没有使用数据库,所以也许我可以在' config / application.rb'上尝试一下。文件,但我该怎么办?

2 个答案:

答案 0 :(得分:0)

没有必要更改您的developmenttest数据库,这些数据库仍然可以使用sqlite3,因此您的C9实例将继续有效。

(尽管在所有环境中使用一致的适配器有一些优点)

如果这只是一个爱好练习,我很想保留sqlite3进行开发和测试。

此外,Heroku用自己的版本替换database.yml,因此您不需要在database.yml中生成节

您确实需要pg gem,但您可以指定它仅在生产中加载,您可以指定sqlite3 gem仅在开发和测试中加载。在你的Gemfile中执行,然后捆绑。

group :development, :test do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

如果要在C9实例中使用PostgreSQL,则必须安装PostgreSQL(数据库,而不仅仅是适配器)。这不是一个简单的过程。

此维基解释了如何安装它。

https://wiki.postgresql.org/wiki/Detailed_installation_guides

答案 1 :(得分:-2)

您可以手动创建数据库的解决方案之一,这很容易解决