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实例。 也许你需要在配置中传递实例名称? –