web-dev-qa-db-ja.com

URLを使用してpostgresqlに接続する方法

私は以前に質問しました 質問 返事はありませんでした。

基本的にエラーが発生しますinvalid database urlやろうとしたときheroku db:Push

データベースのURLを明示的に指定してみてください。

私は試した:

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

しかし、それはエラーを出しました:

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

ユーザー名とパスワードを提供するための形式は何ですか?

36
Omnipresent

heroku db:Push postgres://username:password@localhost/myrailsdbをお試しください。

56
Håvard S

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
12
ma11hew28

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

5
user181677

ドキュメントによると

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
3
Toumi

Heroku cliがコマンドを変更しました。

heroku pg:Push postgres://username:password@localhost/myrailsdb
1
Harry Moreno