Почему 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 Для начала.