Rails и postgresql - пароль не указан - PullRequest
0 голосов
/ 27 июня 2019

Я не могу понять, почему я постоянно получаю эту ошибку при запуске rake db:migrate:status после переключения на Postgresql и Rails 5.2.1

[root:7e2d33988106:~/myapp]# rake db:migrate:status                                                                                                                                                                                                      12:04AM/06.27
rake aborted!
PG::ConnectionBad: fe_sendauth: no password supplied
/usr/local/rvm/gems/ruby-2.5.1/gems/pg-1.1.4/lib/pg.rb:56:in `initialize'
/usr/local/rvm/gems/ruby-2.5.1/gems/pg-1.1.4/lib/pg.rb:56:in `new'
/usr/local/rvm/gems/ruby-2.5.1/gems/pg-1.1.4/lib/pg.rb:56:in `connect'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:692:in `connect'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:223:in `initialize'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:48:in `new'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:48:in `postgresql_connection'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:811:in `new_connection'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:855:in `checkout_new_connection'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:834:in `try_to_checkout_new_connection'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:795:in `acquire_connection'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:523:in `checkout'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:382:in `connection'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1014:in `retrieve_connection'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:118:in `retrieve_connection'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:90:in `connection'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/schema_migration.rb:22:in `table_exists?'
/usr/local/rvm/gems/ruby-2.5.1/gems/activerecord-5.2.3/lib/active_record/railties/databases.rake:124:in `block (3 levels) in <top (required)>'
/usr/local/rvm/gems/ruby-2.5.1/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
/usr/local/rvm/gems/ruby-2.5.1/bin/ruby_executable_hooks:24:in `eval'
/usr/local/rvm/gems/ruby-2.5.1/bin/ruby_executable_hooks:24:in `<main>'
Tasks: TOP => db:migrate:status
(See full trace by running task with --trace)

Что я сделал до сих пор

Я отредактировал файл pg_hba.conf, чтобы показать следующее:

local   all             postgres                                md5
local   all             all                                     md5
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

и перезапустил службу.Неудачно.Та же ошибка.Первой ошибкой, которую я получил до этого, был неверный пароль для postgresql, поэтому мне пришлось изменить одну из опций «peer» на «md5»

Если я загляну в мой файл config/database.yml, это то, что онвыглядит так:

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
  adapter: postgresql
  pool: 5
  timeout: 5000
  encoding: unicode
  username: postgres
  database: <%= Rails.application.credentials.dig(:database, Rails.env.to_sym, :database_name) %>
  # username: <%= Rails.application.credentials.dig(:database, Rails.env.to_sym, :database_user_name) %>
  # password: <%= Rails.application.credentials.dig(:database, Rails.env.to_sym, :database_password) %>

development:
  <<: *default

test:
  <<: *default

staging:
  <<: *default

production:
  <<: *default

и когда я редактирую учетные данные с помощью rake (используя EDITOR=vim rails credentials:edit), вот как выглядит этот файл:

# aws:
#   access_key_id: 123
#   secret_access_key: 345

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: <my long key redacted for stackoverflow>
database:
 development:
   database_name: development
   database_user_name: postgres
   database_password: <redacted for stackoverflow>
 test:
   database_name: test
   database_user_name: postgres
   database_password: <redacted for stackoverflow>
 production:
   database_name: production
   database_user_name: postgres
   database_password: <redacted for stackoverflow>

Я чувствую, что яуже несколько часов в глубине кроличьей норы и не могу понять, как заставить это приложение Rails работать с Postgresql.

Я посмотрел этот пост здесь: PG :: ConnectionBad fe_sendauth: noпароль предоставлен и безуспешно попробовал его предложение, и даже здесь Как устранить ошибку 'fe_sendauth: пароль не указан' в Rails с использованием PostgreSQL? тоже не повезло.У меня нет ни host: '', ни host: 'localhost' в файле config/database.yml (я пытался добавить его и все еще не работал), поэтому я не совсем уверен, что это как-то связано смне.

Есть еще предложения?

1 Ответ

1 голос
/ 27 июня 2019

Добавьте ваше имя пользователя и пароль в production: в database.yml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...