Rails + Postgres fe_sendauth: пароль не указан
Привет, я пытаюсь подключить postgresql к моему проекту rails. Я изучаю тестирование, но мои тесты не выполняются из-за ошибки postgresql о некорректном пароле:
Edmunds-MacBook-Pro:langexchange edmundmai$ rake test:units
rake aborted!
fe_sendauth: no password supplied
Я уже читал, и мой файл pg_hba.conf изначально был уже таким:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication edmundmai
вот мой файл database.yml в моем проекте rails
default: &default
adapter: postgresql
encoding: utf8
pool: 5
username: edmundmai
password:
development:
<<: *default
database: project_development
test:
<<: *default
database: project_test
production:
<<: *default
database: project_production
Кто-нибудь знает, как я могу это исправить? Мы можем общаться, если это проще.
Ответы
Ответ 1
Сначала вы должны изменить:
local all all trust
в
local all all md5
Затем вы должны создать super_user в PostgreSQL с username
и password
, после чего добавив username
и password
нового пользователя в ваш файл database.yml
.
Чтобы создать новый super_user
, откройте Pg Admin III
и щелкните правой кнопкой мыши внизу Login Roles
, чтобы создать нового суперпользователя.
Ответ 2
Убедитесь, что вы определили оба RAILS_ENV и RACK_ENV на вашем сервере хостинга. У меня была аналогичная проблема, когда все работало, кроме rake
, и решение заключалось в том, чтобы добавить RACK_ENV = production в мою среду. RAILS_ENV уже был готов к производству.
export RACK_ENV=production
bundle exec rake db:version
Вы должны увидеть какой-то вывод, например:
Current version: 20121126151935
Решение. Убедитесь, что ваше приложение Rails имеет доступ к переменным окружения RAILS_ENV и RACK_ENV. Кроме того, убедитесь, что они имеют одинаковое значение.
Ответ 3
На вашей локальной машине в разделах test
и development
файла database.yml
вы должны изменить username
на свое имя пользователя. Генератор рельсов делает его таким же, как ваше имя приложения, и это не сработает. Раздел production
будет зависеть от вашей производственной настройки. Если вы используете героку, вам ничего не нужно менять.
Ответ 4
Вам нужно только создать user/passw и схему (db) в postgres с помощью pgadmin и поместить user/passw в database.yml. Когда я попытался создать базу данных с rake db: создайте в текущей папке проекта rails, она не удалась, и я потрошился, чтобы ошибка не могла создать для postgreSQL-адаптера. После этого я создал схему для проекта rails с pgadmin, все в порядке, без каких-либо изменений в pg_hba.conf.