Ошибки Heroku Push - PullRequest
       30

Ошибки Heroku Push

1 голос
/ 29 января 2012

Добрый день,

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

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

heroku db:push

Но продолжайте получать следующую ошибку:

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

Очевидно, что это как-то связано с разрешениями и пользователями в локальной базе данных / 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". Я не совсем уверен, откуда он это берет. Имя моей базы данных не таково (хотя это мое имя, ха-ха)

Ответы [ 3 ]

1 голос
/ 29 января 2012

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

Ваш файл database.yml должен выглядеть следующим образом (я использую MySQL локально, поэтому *Параметры 1006 * и 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 голосов
/ 02 февраля 2012

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

heroku db:push postgres://postgres:PASSWORD@127.0.0.1:5432/DATABASE

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

0 голосов
/ 29 января 2012

Вам потребуется использовать специальную ENV-переменную Heroku, чтобы использовать DB, обычно ENV['DATABASE_URL']

Edit: если у вас есть db mapper как datamapper, вы бы написали это так:

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

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

...