2
MSSQL數據庫,當我剛開始藥劑鳳凰新Web應用程序有:錯誤創建與外生
mix phoenix.new phoenix_sample --database mssql
它生成的配置/ dev.exs與DB的配置文件,我已經修改,以符合我目前的MS SQL Server:
config :phoenix_sample, PhoenixSample.Repo,
adapter: Tds.Ecto,
username: "dev",
password: "dev",
database: "phoenix_sample_db",
hostname: "localhost",
pool_size: 10
我能夠登錄到SSMS爲dev
用戶和連接到數據庫phoenix_sample_db
但是當我運行:mix ecto.create
我總是報錯了:
** (EXIT from #PID<0.46.0>) %Tds.Error{message: "tcp connect: nxdomain", mssql: nil}
17:44:04.805 [error] GenServer #PID<0.274.0> terminating
** (stop) %Tds.Error{message: "tcp connect: nxdomain", mssql: nil}
Last message: {:connect, [port: 1433, hostname: ".", database: "master", otp_app: :phoenix_sample, repo: PhoenixSample.Repo, adapter: Tds.Ecto, username: "dev", password: "dev", pool_size: 10]}
State: %{attn_timer: nil, env: %{trans: <<0>>}, ireq: nil, itcp: nil, opts: [port: 1433, hostname: ".", database: "master", otp_app: :phoenix_sample, repo: PhoenixSample.Repo,
adapter: Tds.Ecto, username: "dev", password: "dev", pool_size: 10], pak_data: "", pak_header: "", queue: {[{{:connect, [port: 1433, hostname: ".", database: "master", otp_app: :phoenix_sample, repo: PhoenixSample.Repo, adapter: Tds.Ecto, username: "dev", password: "dev", pool_size: 10]}, {#PID<0.46.0>, #Reference<0.0.2.504>}, #Reference<0.0.2.505>}], []}, sock: nil, state: :ready, statement: nil, tail: "", usock: nil}
爲什麼它不工作,爲什麼ecto
試圖連接到master
分貝?
如果ecto
試圖創建新的數據庫,那麼我需要將sa
憑證傳遞給db用戶配置?
看到這個:https://github.com/elixir-lang/ecto/issues/932請注意那部分,說nxdomain意味着它不能到達主機。由於您指向本地主機,因此可能是防火牆問題。 –
@OnorioCatenacci我已關閉防火牆,但仍然是相同的錯誤 – Grievoushead
@Grievoushead我沒有使用MSSQL與Phoenix和Elixir,但像Onorio說,nxdomain意味着主機無法聯繫到。但是我想指出你的邏輯有一個缺陷。您似乎想要在已經創建phoenix_sample_db時運行ecto.create。 另外我看了TDS GitHub,提到這個: Tds通過將instance:「instancename」傳遞給連接選項來支持sql實例。 也許你需要在配置中傳遞實例名稱? –