Elixir / Phoenix无法连接云托管的Postgres DB

时间:2017-01-29 04:24:21

标签: postgresql elixir phoenix-framework ecto

尝试将我的第一个凤凰应用程序连接到Compose的Cloud Hosted Postgres数据库,但无法连接。我已经确认它已启动并正在运行。我收到以下错误:

[error] GenServer #PID<0.178.0> terminating
** (DBConnection.ConnectionError) tcp connect (postgres://*****@aws-us-east-1-portal.5.dblayer.com:16786/compose:5432): non-existing domain - :nx
domain
    (db_connection) lib/db_connection/connection.ex:148: DBConnection.Connection.connect/2
    (connection) lib/connection.ex:622: Connection.enter_connect/5
    (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message: nil
State: Postgrex.Protocol
** (Mix) The database for HelloPhoenix.Repo couldn't be created: an exception was raised:
    ** (DBConnection.ConnectionError) tcp connect (postgres://****@aws-us-east-1-portal.5.dblayer.com:16786/compose:5432): non-existing domain -
:nxdomain
        (db_connection) lib/db_connection/connection.ex:148: DBConnection.Connection.connect/2
        (connection) lib/connection.ex:622: Connection.enter_connect/5
        (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3

这些是我的依赖项:

defp deps do
  [{:phoenix, "~> 1.2.1"},
  {:phoenix_pubsub, "~> 1.0"},
  {:phoenix_ecto, "~> 3.0"},
  {:postgrex, ">= 0.0.0"},
  {:phoenix_html, "~> 2.6"},
  {:phoenix_live_reload, "~> 1.0", only: :dev},
  {:gettext, "~> 0.11"},
  {:cowboy, "~> 1.0"}]
end

我的数据库配置:

# Configure your database
config :hello_phoenix, HelloPhoenix.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: "admin",
  password: "******",
  database: "compose",
  hostname: "postgres://admin:******@aws-us-east-1-portal.5.dblayer.com:16786/compose",
  pool_size: 10

使用此版本的PostgresSQL: PostgreSQL 9.4.10

非常感谢任何帮助。 :-) Y&#39;所有人都要小心! -Chris

2 个答案:

答案 0 :(得分:5)

数据库的propertyName=criteria1 & value=value1hostname,而不是整个aws-us-east-1-portal.5.dblayer.com。此外,您需要指定端口,因为它不是默认的PostgreSQL端口。这应该有效:

postgres://...

答案 1 :(得分:4)

由于您似乎拥有完整的数据库URL,因此最简单的解决方案可能是使用该URL并让ecto将其解码为连接所需的组成部分。

config :hello_phoenix, HelloPhoenix.Repo,
  adapter: Ecto.Adapters.Postgres,
  url: "postgres://admin:******@aws-us-east-1-portal.5.dblayer.com:16786/compose",
  pool_size: 10

以下是该功能的文档:https://hexdocs.pm/ecto/Ecto.Repo.html#module-urls