2012-01-28 139 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