2012-01-28 134 views
1

大家下午好,Heroku推送錯誤

我瀏覽了關於這個主題的其他問題,似乎沒有人問過這個問題。否則我期待着!

在任何情況下 - 我有一臺PostgreSQL數據庫服務器在我的本地機器上運行,並帶有一個MYAPP_DEVELOPMENT數據庫。我試圖做一個

heroku db:push 

但不斷收到以下錯誤:

Failed to connect to database: 
Sequel::DatabaseConnectionError -> PGError: FATAL: role "brandon" does not exist 

這顯然是與權限&用戶本地/ Heroku的共享數據庫,但我老實說,這種東西不太好。任何幫助,將不勝感激。我目前在Heroku中包含「database.yml」文件,Heroku擁有我本地數據庫的所有登錄名/密碼信息......因此,我爲什麼不期待這種錯誤。

謝謝!

**編輯** 這裏是我的database.yml文件的內容(編輯爲清楚起見):

common: &common 
    adapter: postgresql 
    encoding: unicode 
    username: user 
    password: secret 

test: 
    <<: *common 
    database: myapp_test 

development: 
    <<: *common 
    database: myapp_development 

production: 
    <<: *common 
    database: myapp_production 

我想,這一定是在Heroku的設置側的東西。請注意,在我的database.yaml文件中無處顯示「brandon」。我不太確定它是從哪裏來的。我的數據庫的用戶名是不是(儘管這是我的名字,哈哈)

回答

-1

感謝大家的投入到這一個。在db:push ...過程中,我明確提供了Heroku的登錄信息,最終解決了我的問題。:

heroku db:push postgres://postgres:[email protected]:5432/DATABASE 

不知道爲什麼它不在我的database.yml文件中使用(相同)的信息,但哦。

0

你將不得不使用Heroku的特定的環境變量使用DB通常是ENV['DATABASE_URL']

編輯:如果你有一個數據庫映射像DataMapper的你會寫這樣的:

DataMapper.setup(:default, ENV['DATABASE_URL'] || LOCAL_DB_URL) 

然後要麼使用Heroku的DB(如果存在)或默認爲您的本地數據庫是存儲在LOCAL_DB_URL變種。

+0

我的heroku ENV ['DATABASE_URL']被設置爲postres://blahhhhh.amazonws.com/blah的值(即我沒有使用外部數據庫)。分貝:推動不只是在這些條件下工作? – Brandon 2012-01-31 03:30:08

+0

heroku爲你設置ENV變量。你只需要使用它。但是這在Heroku文檔中。 – three 2012-01-31 07:39:46

+0

謝謝你回到我身邊。如何在Heroku配置文件和/或database.yml文件中設置它?我正在使用ActiveRecord和Postgres數據庫。我可以發誓我已經把我的本地開發數據庫推到Heroku之前沒有任何擺弄 – Brandon 2012-01-31 09:10:37

1

此錯誤通常表示在您的database.yml文件的適當環境中未指定username

database.yml文件應類似於下面的(我使用MySQL在本地,因此adaptersocket參數):

common: &common 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    pool: 5 
    username: <your_username> 
    password: <your_password> 
    socket: /tmp/mysql.sock 

development: 
    <<: *common 
    database: appname_dev 

test: 
    ... 

staging: 
    ... 

production: 
    <<: *common 
    database: appname_prod 

如果不解決您的問題,檢查以確保Heroku的是在正確的運行環境:

  • heroku config --app <appname>
  • 確保RACK_ENV設置爲production
  • 如果不是:heroku config:add RACK_ENV=production --app <appname>

(這本來如果您粘貼文件database.yml的內容有所幫助。)

+0

包括我上面的databse.yml文件的內容。 Heroku正在生產環境中運行。謝謝你的回答! – Brandon 2012-01-31 03:28:30