2016-12-31 3 views
0

Я пытаюсь развернуть приложение Rails 5 с помощью Capistrano, и я повесил трубку на шаге db: migrate.Rails - подключение к postgres с url, роль не существует

В частности, когда мои скрипты пытаются запустить БД: мигрировать я получаю ошибку:

ActiveRecord::NoDatabaseError: FATAL: role "admin" does not exist

Мой файл database.yml выглядит следующим образом для производства блока:

production: 
    adapter: postgresql 
    encoding: unicode 
    # For details on connection pooling, see rails configuration guide 
    # http://guides.rubyonrails.org/configuring.html#database-pooling 
    pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 
    url: <%= ENV['DATABASE_URL'] %> 

и my database_url имеет вид:

postgresql:://mydb_user:[email protected]/db_name 

С myd b_user, mydbuser_pass и db_name заменены моими правильными значениями.

Внутри Postgres я могу видеть эти разрешения на моей базе данных:

db_name | postgres | UTF8  | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres + postgres=CTc/postgres + mydb_user=CTc/postgres 

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


Теперь пользователь я вошел, как во время Capistrano развертывания имеет имя пользователя «администратор», что приводит меня к мысли, что я принципиально не понимаю, что-то о Postgres ролях. Почему мой зарегистрированный в настоящее время пользователь имеет какое-либо отношение к соединению postgres, когда я дал свое имя пользователя и пароль через URL-адрес базы данных для определенного пользователя postgres, который я уже создал? Является ли это заявлением, что мое имя пользователя ubuntu должно соответствовать mydb_user для входа? Как исправить эту ошибку, специфичную для рельсов и URL-адресов базы данных с помощью postgres?

+0

У вас есть db: create, db: create: all или db: setup? NoDatabaseError говорит, что вы не создали необходимую базу данных. http://stackoverflow.com/questions/25611004/rake-dbcreate-throws-database-does-not-exist-error-with-postgresql также имеет некоторые опции. Я не использовал Капистрано, поэтому я не знаю, как это взаимодействует. –

+0

Запуск db: создают результат с подобной ошибкой. PG :: ConnectionBad: FATAL: роль «admin» не существует – Msencenb

+0

Вы пытались создать администратора? В postgres \ du отобразит пользователей/роли. (Пользователи и роли теперь одно и то же.) Затем создайте роль admin с Superuser Createrole CreateDB Replication BypassRLS; Ну, вот что я использовал. –

ответ

0

Классический случай немых ошибок. В URLs не два двоеточия в них, как я описал выше, вместо этого они

postgres:// 

По умолчанию рельсы пытается подключиться как «администратор», потому что это пользователь Unix я вошел в систему. Решение, дважды проверьте свой формат url postgres.

Смежные вопросы