从SQLite迁移到Postgres以在Heroku上部署。 PG :: ConnectionBad。使用Cloud9

时间:2017-01-26 21:29:05

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

我正在尝试从SQLite迁移到Postgres,以便应用程序在Heroku上正确部署。但我没有运气。

rake aborted!
PG::ConnectionBad: could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?

我是Postgres的新手,但我已经尝试了所有我没遇到的任何建议。这是我的database.yaml文件:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  timeout: 5000
  host: localhost
  username: postgres 
  password: postgres

development:
  <<: *default
  database: app_development

test:
  <<: *default
  database: app_test

production:
  <<: *default
  database: app_production

我相信我在Postgres列表中正确设置了空数据库,但运行rake db:migrate失败。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果你还没有跑:

sudo service postgresql start

在cloud9终端

然后切换到你的postgres用户并验证你是否拥有你在database.yaml中创建的数据库

sudo su - postgres
psql

然后在psql提示符下输入以下命令以列出所有可用数据库

\list

如果您需要创建数据库,可以输入

CREATE DATABASE "database_name";

要设置postgres用户的密码

\password postgres

完成上述步骤后,请确保您的database.yaml文件具有正确的数据库名称,用户名和密码并尝试运行

rake db:migrate

如果数据库设置正确且配置了database.yaml文件

尝试重新启动postgres服务器

sudo /etc/init.d/postgresql restart

然后再次运行rake db:migrate

<强>来源

与设置PostgresSQL相关的Cloud9 docs

Cloud9 Forum Post与在Rails应用程序中设置PostgreSQL有关

与更改psql密码相关的Stackoverflow post

与重启PostgreSQL服务器相关的Stackoverflow post

<强>替代 我已经设法将我开始使用SQLite开发的应用程序推送到heroku的另一种方法是将SQLite gem移动到我的Gemfile中的开发组中,并添加一个具有heroku依赖项的生产组:

group :production do
  gem 'rails12_factor'
  gem 'pg'
end

然后在没有生产组的开发包安装中:

bundle install --without production

当我推送到heroku时,做正常的bundle安装