Elixir:连接到SQL Server数据库时出现Ecto / Tds错误

时间:2017-11-29 16:26:46

标签: sql-server elixir ecto

我编写了一个连接到两个不同数据库的elixir应用程序,我在远程数据库开发环境中运行良好 - 将相同的设置连接到我的vpn上的另一个数据库。当我针对不同的远程SQL Server数据库运行它时,我收到一个奇怪的错误:

  

**(DBConnection.ConnectionError)错误的返回值:{:error,%Tds.Protocol {env:%{trans:<<>>},itcp:nil,opts:[password:   :删除,idle_timeout:5000,名称:EventBridge.C3poRepo.Pool,   otp_app :: event_bridge,repo:EventBridge.C3poRepo,超时:15000,   pool_timeout:5000,适配器:Tds.Ecto,用户名:: ALSO_REDACTED,   数据库::已删除,主机名::已删除,池:   DBConnection.Poolboy],pak_data:“”,pak_header:“”,查询:   %Tds.Query {handle:1,statement:nil},result:%Tds.Result {columns:   [],命令:nil,num_rows:0,rows:[]},sock:{:gen_tcp,   #Port< 0.6472>},state :: ready,tail:“”,transaction:nil,usock:nil}}

我在配置此数据库时获得的凭据是正确的 - 我使用DBeaver手动验证了它们。我相信我能够调试这个,但我遇到了一些我不明白的错误信息。具体做法是:

  

{:error,%Tds.Protocol {env:%{trans:<<< 0>>}

为了完整起见,这里是mix.exs中的deps部分:

defp deps do
    [
      {:tds_ecto, "~> 2.0.3"},
      {:postgrex, ">= 0.0.0"},
      {:gen_stage, "~> 0.12"},
      {:timex, "~> 3.1"},
      {:timex_ecto, "~> 3.0"},
      {:poison, "~> 3.1"},
      {:ecto, "~> 2.1"}
    ]
  end

我要问的是要了解错误信息的这一部分是什么意思,或者甚至是对整个错误输出的一些更一般的反馈。

以下是有问题的Repo的两个配置实例。首先是有效的:

config :event_bridge, EventBridge.FirstRepo,
  adapter: Tds.Ecto,
  database: "first_repo_development",
  username: "testuser",
  password: "password_redacted",
  hostname: "server_one"

以下是不起作用的配置:

config :event_bridge, EventBridge.FirstRepo,
  adapter: Tds.Ecto,
  database: "first_repo_staging",
  username: "staging_username",
  password: "password_redacted",
  hostname: "server_twelve"

两者都在DBeaver中工作。

1 个答案:

答案 0 :(得分:0)

添加     pool_size: 在db配置中再试一次