无法通过rails连接heroku上的现有postgres数据库

时间:2018-04-11 20:18:29

标签: ruby-on-rails postgresql heroku

基本上,它正在我的localhost上运行,但是当我在终端中执行以下命令行时。

heroku run rake db:migrate 

我收到以下错误消息。

PG::ConnectionBad: could not connect to server: Connection timed out
Is the server running on host "XX.XX.XX.XX" and accepting
TCP/IP connections on port XXXX?

这是我在我的导轨中的一个控制器上的索引方法

def index
  sql = "Select * from api.customer"
  @examples = ActiveRecord::Base.connection.execute(sql)
  render json: @examples
end

database.yml文件 development: adapter: postgresql encoding: utf8 url: <%= ENV['DATABASE_URL'] %> pool: 10

production: adapter: postgresql encoding: utf8 url: <%= ENV['DATABASE_URL'] %> pool: 10

我在database.yml文件中包含了数据库信息(主机,端口,数据库名称,用户名,密码)。数据库信息方面的所有内容都是正确的,因为我在询问之前进行了多重检查。我的主机是ip地址格式。我还用pgadmin 3检查了数据库,并且服务器配置(pg_hba.conf和postgresql.conf)对所有ip地址开放。 (0.0.0.0/0 md5并收听'*')请告知如何做。

谢谢!

1 个答案:

答案 0 :(得分:0)

在Rails中,DATABASE_URL ENV var优先于database.yml中输入的任何值。

Heroku通过DATABASE_URL ENV var设置Rails数据库(Heroku使用术语配置变量,这是完全相同的事情)。当buildpack在附加postgres插件后检测到您正在部署rails应用程序时,它会自动执行此操作。

要连接到其他数据库,您需要更改DATABASE_URL

heroku config:set DATABASE_URL=postgresql://xxx.xxx.xxx/myapp

请参阅: