ruby-on-rails - start - scaffold rails




Rails и PostgreSQL: роли postgres не существует (8)

Я установил PostgreSQL на своем Mac OS Lion, и я работаю над приложением rails. Я использую RVM, чтобы все было отделено от других приложений Rails.

По какой-то причине, когда я пытаюсь перенести db в первый раз, рейк не может найти пользователя postgres. Я получаю ошибку

 FATAL:  role "postgres" does not exist

У меня есть pgAdmin, поэтому я могу ясно видеть, что в базе данных есть пользователь postgres - административная учетная запись, поэтому я не уверен, что еще делать.

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


В документации Heroku; Приступая к работе с рельсами 4, они говорят:

Вам также необходимо удалить поле имени пользователя в вашей базе данных.yml, если таковой существует: В файле config / database.yml удалить: имя пользователя: myapp

Затем вы просто удаляете эту строку в «development:», если вы не pg не сообщите базе данных, которая работает под роль «myapp»,

Эта строка сообщает рельсам, что база данных myapp_development должна запускаться под роль myapp. Поскольку вы, вероятно, не имеете этой роли в своей базе данных, мы удалим ее. С помощью строки remove Rails попытается получить доступ к базе данных как пользователя, который в настоящее время зарегистрирован на компьютере.

Также не забудьте создать базу данных для разработки:

$createdb myapp_development

Repleace "myapp" для вашего имени приложения


В командной строке Ubuntu, но не root, введите

Имя пользователя sudo -u postgres createuser

имя пользователя выше должно совпадать с именем, указанным в сообщении «FATAL: имя роли» не существует ».

Введите пароль для имени пользователя.

Затем повторно введите команду, в которой генерируемая роль не существует.


Можете ли вы иметь несколько локальных баз данных? Проверьте ваш database.yml и убедитесь, что вы нажимаете pg db, который вы хотите. Для rails console используйте rails console .


Мой ответ был намного проще. Просто перешел в папку db и удалил столбец id, который я пытался принудительно создать, но который фактически создан автоматически. Я также удалил USERNAME в файле database.yml (в папке config).


Недавно я получил эту проблему сразу после установки postgres. Если это произойдет сразу после установки, возможно, у вас отсутствует пользователь по умолчанию, postgres. В этом случае вы можете создать postgres пользователя по умолчанию, используя команду ниже.

createuser -s -U $ USER

Ex: createuser -s -U $USER
enter your required role name: postgres
enter password for your the user: 

Он предложит ввести требуемое имя и пароль имени базы данных. После завершения процесса вы можете войти в консоль postgres, используя следующую команду:

psql -U 'your_database_name'

Пример: psql -U postgres
Здесь вам нужно ввести пароль, если вы его предоставили, при создании пользователя.

Надеюсь, поможет :)


После кучи установки и удаления Postgres, вот что теперь, похоже, работает последовательно для меня с Os X Mavericks, Rails 4 и Ruby 2.

  1. В файле database.yml я меняю имена пользователей по умолчанию на имя пользователя моего компьютера, для меня это просто «админ».

  2. В командной строке я запускаю rake db: create: all

  3. Затем я запускаю rake db: migrate

  4. Когда я запускаю сервер рельсов и проверяю локальный хост, он говорит «Добро пожаловать на борт».


Я был на OSX 10.8, и все, что я пробовал, даст мне FATAL: role "USER" does not exist . Как и многие люди, сказанные здесь, запустите createuser -s USER , но это дало мне ту же ошибку. Это, наконец, помогло мне:

$ sudo su
# su postgres
# createuser -s --username=postgres MYUSERNAME

createuser -s --username=postgres создает суперпользователь (-s флаг), подключаясь как postgres (--username = postgres flag).

Я вижу, что на ваш вопрос был дан ответ, но я хочу добавить этот ответ для людей, использующих OSX для установки PostgreSQL 9.2.4.


Я впервые встретил эту проблему, когда я впервые установил приложение POSTGRES.app Heroku. После одного утреннего проб и ошибок я думаю, что эта одна строка кода решена. Как описано выше, это связано с тем, что postgresql не имеет роли по умолчанию при первом запуске. И мы должны это установить.

sovanlandy=# CREATE ROLE postgres LOGIN;

Вы должны войти в свою консоль psql, чтобы использовать эту команду psql.

Также было отмечено, что если вы уже создали роль postgre, но все же получаете ошибки разрешения, вам нужно изменить с помощью команды:

sovanlandy=# ALTER ROLE postgres LOGIN;

Надеюсь, поможет!





rake