从SQLITE3转换为Heroku的postgres

时间:2016-06-06 01:13:14

标签: ruby-on-rails ruby postgresql heroku sqlite

我知道有很多这方面的话题。我试过它们都没有成功。注意,我不需要维护以前的数据。我只需要我的应用程序在Heroku中工作。

遵循本指南,这是我尝试过的一件事 Change from SQLite to PostgreSQL in a fresh Rails project

所以我的应用程序使用sqlite3。

进入' gemfile'并改变

gem 'sqlite3'加入gem 'pg'

在终端中运行$ bundle(以更改Gemfile.lock)

转到我的database.yml文件并将其替换为

development:
  adapter: postgresql
  encoding: utf8
  database: project_development
  pool: 5
  username:
  password:

test: &TEST
  adapter: postgresql
  encoding: utf8
  database: project_test
  pool: 5
  username:
  password:

production:
  adapter: postgresql
  encoding: utf8
  database: project_production
  pool: 5
  username:
  password:

cucumber:
  <<: *TEST

然后我把它推到了github。

在Heroku网站上,我将github目录连接到我的应用程序并进行部署。

它成功部署但页面只显示

We're sorry, but something went wrong.
If you are the application owner check the logs for more information.

我很确定我错过了一个步骤,因为每当我尝试在我的本地机器上运行它时就会说

ActiveRecord::NoDatabaseError

FATAL: database "project_development" does not exist

Extracted source (around line #661):

659 rescue ::PG::Error => error
660   if error.message.include?("does not exist")
661     raise ActiveRecord::NoDatabaseError.new(error.message, error)
662   else
663     raise
664   end

-

修改

当我输入

heroku run rake db:create

我收到回复

▸错误:未指定应用  ▸用法:heroku run --app APP  ▸我们不知道运行此应用程序的应用程序。  ▸从app文件夹中运行此命令,或指定要与--app APP

一起使用的应用程序

当我跑步时

heroku run rake db:create -app nguyen-andrew-a2

我收到回复

运行rake db:在⬢pp上创建nguyen-andrew-as2 ... !!!  ▸无法找到该应用。 Macbook-Pro-5:try2 andrew $

-

在我的本地计算机上运行后,页面现在显示

fe_sendauth: no password supplied

Extracted source (around line #651):
649 # connected server's characteristics.
650 def connect
651    @connection = PGconn.connect(@connection_parameters)
652
653    # Money type has a fixed precision of 10 in PostgreSQL 8.2 and below, and as of
654    # PostgreSQL 8.3 it has a fixed precision of 19. PostgreSQLColumn.extract_precision

2 个答案:

答案 0 :(得分:0)

您是否在本地计算机和Heroku上运行rake db:create? 请尝试以下步骤:

  • bundle exec rake db:create
  • bundle exec rake dg:migrate
  • bundle exec rails s

对于Heroku,只需在任何命令之前添加heroku run,例如:heroku run rake db:createheroku run rake db:migrate

答案 1 :(得分:0)

如果遇到couldn't find that app错误,则意味着您为heroku命令传递了无效的应用名称作为-a, --app选项。有效的应用名称是通过heroku apps命令获得的。

我还看到您运行的是... -app <app-name> ...而不是... --app <app-name> ...,这很可能会导致错误。尝试以下命令替换:

// before
heroku run rake db:create -app nguyen-andrew-a2
// after
heroku run rake db:create --app nguyen-andrew-a2