如何使用url连接到postgresql

时间:2010-01-30 15:55:29

标签: ruby-on-rails postgresql heroku taps

我曾问过一个没有得到任何回复的question

我尝试invalid database url时基本上收到错误heroku db:push

我想我可以尝试明确提供数据库网址。

我试过了:

heroku db:push postgres://postgres@localhost/myrailsdb

但是这给了错误:

Failed to connect to database:
  Sequel::DatabaseConnectionError -> PGError fe_sendauth: no password supplied

提供用户名和密码的格式是什么?

5 个答案:

答案 0 :(得分:53)

尝试heroku db:push postgres://username:password@localhost/myrailsdb

答案 1 :(得分:10)

以下是如何在Ruby脚本中执行此操作:

# Connect to database.
uri = URI.parse(ENV['DATABASE_URL'])
postgres = PG.connect(uri.hostname, uri.port, nil, nil, uri.path[1..-1], uri.user, uri.password)

# List all tables.
tables = postgres.exec('SELECT * FROM pg_catalog.pg_tables')
tables.num_tuples.times do |i|
  p tables[i]
end

答案 2 :(得分:5)

编辑postgresql配置(pg_hba.conf)文件并将“host”类型方法更改为“trust”。但请注意,这不安全。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 md5

重新启动postgresql服务器并重新运行命令

$ heroku db:push postgres://postgres@localhost/myrailsdb

以下是对我的回答的引用:https://stackoverflow.com/a/7667344/181677

答案 3 :(得分:1)

Heroku cli改变了命令。

heroku pg:push postgres://username:password@localhost/myrailsdb

答案 4 :(得分:1)

根据文档

postgresql://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]

示例

postgresql://
postgresql://localhost
postgresql://localhost:5432
postgresql://localhost/mydb
postgresql://user@localhost
postgresql://user:secret@localhost
postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp
postgresql://localhost/mydb?user=other&password=secret