簡體   English   中英

Elixir / Phoenix無法連接到雲托管的Postgres DB

[英]Elixir/Phoenix can't connect to cloud hosted Postgres DB

試圖使我的第一個Phoenix應用程序連接到Compose的Cloud Hosted Postgres DB,但無法連接。 我已驗證它已啟動並正在運行。 我收到以下錯誤:

[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

任何幫助將不勝感激。 :-)大家保重! -克里斯

數據庫的hostnameaws-us-east-1-portal.5.dblayer.com ,而不是整個postgres://... 另外,您還需要指定端口,因為它不是默認的PostgreSQL端口。 這應該工作:

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

由於您似乎擁有完整的數據庫URL,因此最可能的解決方案是使用該URL,然后將其解碼為連接所需的組成部分。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM