Я установил PostgreSQL на свой Mac OS Lion и работаю над приложением rails. Я использую RVM, чтобы хранить все отдельно от других моих приложений Rails.
По какой-то причине, когда я пытаюсь перенести db в первый раз, rake не может найти пользователя postgres. Я получаю ошибку
FATAL: role "postgres" does not exist
У меня есть pgAdmin, поэтому я ясно вижу, что в базе данных есть пользователь postgres - фактически учетная запись администратора - поэтому я не уверен, что еще делать.
Я где-то читал о людях, у которых возникают проблемы с PostgreSQL из-за того, по какому пути он был установлен, но не думаю, что я бы зашел так далеко, если бы он не смог найти базу данных.
postgres
не был создан, что может привести к тому же сообщению об ошибке, см. Соответствующий вопрос: stackoverflow.com/questions/11919391/…Ответы:
Это сообщение появляется, когда пользователь базы данных не существует. Сравните руководство здесь .
Множественные локальные базы данных не могут быть объяснением. Роли действительны для всего кластера. Руководство снова :
Вы, должно быть, попали в другой кластер базы данных . Это будет другой сервер, работающий на той же машине, прослушивающий другой порт. Или, что более вероятно, на другой машине.
Может быть, сообщение действительно пришло с удаленного сервера?
источник
docker rmi $(docker images -q) --force
. но вопрос был наvolumes
я догадываюсьНа самом деле, по какой-то неизвестной причине я обнаружил, что проблема на самом деле связана с тем, что роль postgresql не была создана.
Попробуйте запустить:
Обратите внимание, что роли - это способ, которым PostgreSQL поддерживает разрешения базы данных . Если у пользователя postgres нет роли, то он ни к чему не может получить доступ. Команда createuser представляет собой тонкую оболочку для команд CREATE USER, CREATE ROLE и т. Д.
источник
sudo su - postgres
прежде чем эта команда сработала для меня. Спасибо!-r
Вариант не является необходимым с-s
опцией. Суперпользователь включает атрибут «Создать роль».Недавно у меня возникла эта проблема сразу после установки postgres. Если он приходит сразу после установки, возможно, вам не хватает пользователя по умолчанию, postgres. В этом случае вы можете создать postgres пользователя по умолчанию, используя команду ниже.
createuser -s -U $ ПОЛЬЗОВАТЕЛЬ
Вам будет предложено ввести требуемое имя роли и пароль базы данных. После завершения процесса вы можете войти в консоль postgres, используя команду ниже
Пример: psql -U postgres
Здесь вам нужно ввести пароль, если вы его указали при создании пользователя.
Надеюсь, поможет :)
источник
Я был на OSX 10.8, и все, что я пробовал, давало мне
FATAL: role "USER" does not exist
. Как многие здесь говорили, бегиcreateuser -s USER
, но это дало мне ту же ошибку. Это наконец сработало для меня:createuser -s --username=postgres
Создает суперпользователя (флаг -s) путем подключения, Postgres (--username = POSTGRES флаг).Я вижу, что на ваш вопрос был дан ответ, но я хочу добавить этот ответ для людей, использующих OSX и пытающихся установить PostgreSQL 9.2.4.
источник
sudo su postgres
.Я столкнулся с этой проблемой сразу, когда впервые установил POSTGRES.app от Heroku. После одного утреннего проб и ошибок я думаю, что эта одна строка кода решила проблему. Как описано ранее, это связано с тем, что postgresql не имеет роли по умолчанию при первой настройке. И нам нужно это установить.
Вы должны войти в соответствующую консоль psql, чтобы использовать эту команду psql.
Также обратите внимание, что если вы уже создали роль postgre, но по-прежнему получаете ошибки разрешения, вам необходимо изменить с помощью команды:
Надеюсь, поможет!
источник
В документации Heroku; Начинаю с рельсов 4, мол:
Затем вы просто удаляете эту строку в "development:", если вы не pg сообщает базе данных, которая работает под ролью "myapp"
Также не забудьте создать базу данных для разработки:
Замените myapp в названии вашего приложения
источник
Могли бы вы иметь несколько локальных баз данных? Проверьте свой
database.yml
и убедитесь, что вы попадаете на нужный pg db. Используйтеrails console
для подтверждения.источник
Процедура установки создает учетную запись пользователя,
postgres
которая связана с ролью Postgres по умолчанию. Чтобы использовать Postgres, вы можете войти в эту учетную запись. Но если это не указано явно, приложение rails ищет другую роль, в частности роль, имеющую ваше имя пользователя unix, которая может не быть создана в ролях postgres.Чтобы преодолеть это, вы можете создать новую роль, сначала переключившись на роль postgres по умолчанию, которая была создана во время установки.
sudo -i -u postgres
После входа в учетную запись postgres вы можете создать нового пользователя с помощью команды:
createuser --interactive
Это предложит вам несколько вариантов выбора и, на основе ваших ответов, выполните правильные команды Postgres для создания пользователя.
Передайте имя роли и некоторые разрешения, и роль будет создана, затем вы можете перенести свой db
источник
Мой ответ был намного проще. Просто зашел в папку db и удалил столбец id, который я пытался принудительно создать, но который на самом деле создается автоматически. Я также удалил ИМЯ ПОЛЬЗОВАТЕЛЯ в файле database.yml (в папке config).
источник
В командной строке локального пользователя Ubuntu, но не пользователя root, введите
sudo -u postgres createuser имя пользователя
имя пользователя выше должно совпадать с именем, указанным в сообщении «FATAL: роль 'имя пользователя' не существует».
Введите пароль для имени пользователя.
Затем повторно введите команду, что сгенерированное сообщение роли не существует.
источник
Я оказался здесь после попытки следовать руководству Райана Бэйта по развертыванию на AWS EC2 с помощью Rubber. Вот что со мной произошло: мы создали новое приложение, используя "
rails new blog -d postgresql
Очевидно, это создает новое приложение с pg в качестве базы данных, но база данных еще не была создана. С sqlite вы просто запускаете rake db: migrate, однако с pg вам нужно сначала создать базу данных pg. Райан не сделал этого шага. Команда
rake db:create:all
, тогда мы можем запуститьrake db:migrate
Вторая часть - это изменение файла database.yml. По умолчанию имя пользователя при создании файла - appname. Однако есть вероятность, что ваша роль администратора postgresql отличается (по крайней мере, для меня). Я изменил его на свое имя (см. Выше совет по созданию имени роли), и все готово.
Надеюсь это поможет.
источник
После кучи установки и удаления Postgres вот что, похоже, теперь стабильно работает для меня с Os X Mavericks, Rails 4 и Ruby 2.
В файле database.yml я меняю имена пользователей по умолчанию на имя пользователя моего компьютера, которое для меня просто «admin».
В командной строке запускаю rake db: create: all
Затем я запускаю rake db: migrate
Когда я запускаю сервер rails и проверяю локальный хост, он говорит: «Добро пожаловать на борт».
источник
Возможно, вы сможете обойти это, запустив
initdb -U postgres -D /path/to/data
или запустив его как пользовательский postgres, поскольку по умолчанию он используется для текущего пользователя. GL!источник