Heroku推错误

时间:2012-01-28 21:56:46

标签: ruby-on-rails database postgresql heroku push

下午好,

我浏览了有关此主题的其他问题,似乎没有人问过这个问题。我原以为没法!

无论如何 - 我的本地机器上运行的PostgreSQL数据库服务器带有MYAPP_DEVELOPMENT数据库。我试过做了

heroku db:push

但是不断收到以下错误:

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

这显然与权限和权限有关。本地/ heroku共享数据库上的用户,但老实说,这种东西并不是那么好。任何帮助,将不胜感激。我目前在我的slug中包含了“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”。我不太确定从哪里拉出来。我的数据库用户名不是那个(虽然这是我的名字哈哈)

3 个答案:

答案 0 :(得分:1)

此错误通常表示在username文件中的相应环境下尚未指定database.yml

您的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文件的内容会很有帮助。)

答案 1 :(得分:0)

您必须使用Heroku特定的ENV var来使用通常为ENV['DATABASE_URL']的数据库

编辑:如果您有像数据映射器这样的数据库映射器,您可以这样写:

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

然后使用Heroku DB(如果存在)或默认使用存储在LOCAL_DB_URL var中的本地数据库。

答案 2 :(得分:-1)

感谢大家对此的投入。我最终通过在db:push ...例如:

期间向Heroku明确提供我的登录详细信息来修复我的问题
heroku db:push postgres://postgres:PASSWORD@127.0.0.1:5432/DATABASE

不确定为什么它没有在我的database.yml文件中使用(相同)信息,但是哦。哦。