Почему Phoenix (ecto/Postgresx) не удается подключиться в dev

Я начинаю свой эликсир / Феникс путешествие и возникли некоторые проблемы с моей связи postgres.

когда я запускаю свой сервер, я получаю:

 $ mix phoenix.server
 [error] Postgrex.Protocol (#PID<0.214.0>) failed to connect: ** (Postgrex.Error) tcp connect: connection refused - :econnrefused
 [error] Postgrex.Protocol (#PID<0.217.0>) failed to connect: ** (Postgrex.Error) tcp connect: connection refused - :econnrefused
 [error] Postgrex.Protocol (#PID<0.218.0>) failed to connect: ** (Postgrex.Error) tcp connect: connection refused - :econnrefused
 [error] Postgrex.Protocol (#PID<0.211.0>) failed to connect: ** (Postgrex.Error) tcp connect: connection refused - :econnrefused
 [error] Postgrex.Protocol (#PID<0.215.0>) failed to connect: ** (Postgrex.Error) tcp connect: connection refused - :econnrefused
 [error] Postgrex.Protocol (#PID<0.219.0>) failed to connect: ** (Postgrex.Error) tcp connect: connection refused - :econnrefused
 [error] Postgrex.Protocol (#PID<0.216.0>) failed to connect: ** (Postgrex.Error) tcp connect: connection refused - :econnrefused
 [error] Postgrex.Protocol (#PID<0.213.0>) failed to connect: ** (Postgrex.Error) tcp connect: connection refused - :econnrefused
 [error] Postgrex.Protocol (#PID<0.212.0>) failed to connect: ** (Postgrex.Error) tcp connect: connection refused - :econnrefused
 [error] Postgrex.Protocol (#PID<0.210.0>) failed to connect: ** (Postgrex.Error) tcp connect: connection refused - :econnrefused
 [info] Running Rumbl.Endpoint with Cowboy using http://localhost:4000
 [error] Postgrex.Protocol (#PID<0.215.0>) failed to connect: ** (Postgrex.Error) tcp connect: connection refused - :econnrefused

будучи новым для Elixir, Phoenix и Ecto, я не понимаю, как отладить эту проблему. Любые предложения о том, что моя проблема или как я могу пойти об отладке, были бы очень признательны.

мое приложение настроено

у меня есть основное приложение

mix phoenix.new rumbl
cd rumbl
mix deps.get
mix deps.compile

мой config / dev.exs имеет следующую настройку db

# Configure your database
config :rumbl, Rumbl.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: "elixir",
  database: "rumbl_dev",
  hostname: "localhost",
  pool_size: 10

когда я запускаю mix ecto.create ошибок нет, и я вижу rumbl_dev когда я запускаю l в psql. Он также принадлежит пользователю elixir.

под управлением mix ecto.migrate бросает те же ошибки соединений

моя файл pg_hba.файл conf имеет следующий

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

вот что я вижу, когда я вхожу в систему с psql

$ psql --dbname=rumbl_dev --username=elixir --host=127.0.0.1 --password
Password for user elixir:
psql (9.4.5)
Type "help" for help.

rumbl_dev=>

4 ответов


ок, так я понял. В конце концов, это простая ошибка с моей стороны. Хотя сделать это несложно.

Я использую Boxen на моем Mac, и он меняет порт на 15432 по какой-то причине.

возможно, я приземлился на это раньше, если mix ecto.create не удалось. Не уверен, почему это работает.

надеюсь, это поможет другим в будущем


  • удалить базу данных rumbl_dev в postgresql, чтобы начать все заново.
  • если хотите, вы можете попробовать MD5 auth для версии dev на localhost, добавив следующую строку в файл pg_hba.conf

    # host DATABASE USER ADDRESS METHOD
    
    host rumbl_dev elixir localhost md5
    

    Примечание: см. здесь подробнее о настройке / etc/postsgresql/9.4 / pg_hba.conf и изменить настройки, как вы считаете нужным.

  • добавить настройки с паролем к dev.exs:

    config :rumbl, Rumbl.Repo, 
    adapter: Ecto.Adapters.Postgres, 
    username: "elixir", 
    database: "rumbl_dev", 
    hostname: "localhost", 
    password: "***password***",
    pool_size: 10
    
  • попробуй mix do ecto.create, ecto.migrate и посмотреть, как она идет.

надеюсь, это поможет, если нет, у меня здесь нет идей.


необходимо включить пароль пользователя базы данных в блок конфигурации.

config :rumbl, Rumbl.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: "elixir",
  password: "???",
  database: "rumbl_dev",
  hostname: "localhost",
  pool_size: 10

У меня такая же проблема каждый раз, когда я не запускаю Postgres перед вызовом mix phoenix.server. Я использую https://postgresapp.com Для начала.