2012-01-28 6 views
1

Добрый день,Heroku Push Errors

Я просмотрел другие вопросы по этой теме, и, похоже, никто не спросил об этой проблеме. Я ожидал иначе!

В любом случае - у меня есть сервер базы данных PostgreSQL, работающий на моем локальном компьютере с базой данных MYAPP_DEVELOPMENT. Я пытался сделать

heroku db:push 

Но постоянно получаю следующее сообщение об ошибке:

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

Это, очевидно, что-то делать с правами & пользователей на локальных/Heroku общей базы данных, но я Честно говоря, не так хорошо с такими вещами. Любая помощь будет оценена по достоинству. Я в настоящее время включаю файл «database.yml» в моем slug to Heroku, у которого есть вся информация о логине/пароле для моей локальной базы данных ... следовательно, почему я не ожидал такого рода ошибок.

Спасибо!

** EDIT ** Вот содержание моего 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 не появляется «брендон». Я не совсем уверен, с чего это тянет. Мое имя пользователя базы данных не то, что (хотя это мое имя ха-ха)

ответ

-1

Спасибо за вход каждого на этот. Я закончил тем, что исправил свою проблему, явно предоставив свои данные для входа в Heroku во время db: push ... например.:

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

Не знаю, почему он не использует (то же самое) информацию в моем файле database.yml, но да ладно.

0

Вы должны будете использовать Heroku конкретного ENV вар использовать DB, который обычно ENV['DATABASE_URL']

Edit: Если у вас есть дб картограф, как DataMapper вы написали бы это следующим образом:

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

который затем либо использует Heroku DB, если он существует, или по умолчанию вашей локальной БД, которая хранится в LOCAL_DB_URL вар.

+0

My heroku ENV ['DATABASE_URL'] установлен в postres: //blahhhhh.amazonws.com/blah value ... (т. Е. Я не использую внешнюю базу данных). Должен ли db: толчок не просто работать в этих условиях? – Brandon

+0

heroku устанавливает для вас ENV var. Вам просто нужно это использовать. Но это в документах Heroku. – three

+0

Спасибо, что вернулись ко мне. Как настроить это в моем конфигурационном файле Heroku и/или файле database.yml? Я использую ActiveRecord и базу данных Postgres. Я мог бы поклясться, что я ввел свою локальную базу данных Dev в Heroku, прежде чем без каких-либо проблем. – Brandon

1

Эта ошибка обычно означает, что username не был указан в соответствующей среде в вашем файле database.yml.

Ваш файл database.yml должен выглядеть следующим образом (я использую MySQL локально, отсюда adapter и socket параметры):

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