2016-04-05 44 views
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用户配置?

+0

看到这个:https://github.com/elixir-lang/ecto/issues/932请注意那部分,说nxdomain意味着它不能到达主机。由于您指向本地主机,因此可能是防火墙问题。 –

+0

@OnorioCatenacci我已关闭防火墙,但仍然是相同的错误 – Grievoushead

+0

@Grievoushead我没有使用MSSQL与Phoenix和Elixir,但像Onorio说,nxdomain意味着主机无法联系到。但是我想指出你的逻辑有一个缺陷。您似乎想要在已经创建phoenix_sample_db时运行ecto.create。 另外我看了TDS GitHub,提到这个: Tds通过将instance:“instancename”传递给连接选项来支持sql实例。 也许你需要在配置中传递实例名称? –

回答

1

我需要启用TCP/IP协议在SQL Server配置管理

enter image description here

之后,我已经重新启动MSSQLServer服务,并与下面的配置跑mix ecto.create

config :phoenix_sample, PhoenixSample.Repo, 
    adapter: Tds.Ecto, 
    username: "sa", 
    password: "********", 
    database: "test_ecto", 
    hostname: "SERG-MAC" 

输出: enter image description here

最后它的工作原理。 感谢@hectorsq