2010-01-30 89 views
29

我之前詢問過沒有得到任何回覆的question如何使用url連接到postgresql

基本上,當我嘗試做heroku db:push時,得到一個錯誤invalid database url

我想我可以嘗試明確提供數據庫url。

我想:

heroku db:push postgres://[email protected]/myrailsdb

但是,這給了錯誤:

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

什麼是提供用戶名和密碼的格式?

回答

47

嘗試heroku db:push postgres://username:[email protected]/myrailsdb

+0

如果你的本地數據庫用戶沒有密碼該怎麼辦? – mkirk 2011-11-15 04:13:37

+3

只需放下密碼即'db push postgres:// username @ localhost/myrailsdb' – 2011-11-15 21:31:41

+1

如果沒有提供密碼,將會出現錯誤 無法連接到數據庫: Sequel :: DatabaseConnectionError - > PGError fe_sendauth :沒有提供密碼 – user181677 2012-02-03 02:32:12

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://[email protected]/myrailsdb 

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

+0

其中pg_hba.conf文件位於何處? – kibaekr 2012-06-25 13:47:13

+0

其實,發現它。對於Ubuntu,Debian/Ubuntu:/etc/postgresql/9.0/main/pg_hba.conf – kibaekr 2012-06-25 14:01:28

8

這裏是如何做到這一點的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 
+0

你有什麼進口/需求? – Nick 2014-10-24 13:13:17

+0

需要'uri'oops – Nick 2014-10-24 13:13:48

1

Heroku cli更改了命令。

heroku pg:push postgres://username:[email protected]/myrailsdb