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

问题描述 投票:0回答:1

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

**(DBConnection.ConnectionError)错误的返回值:{:错误,%Tds.Protocol {env:%{trans:<< 0 >>},itcp:nil,opts:[密码::已删除,idle_timeout:5000,名称:EventBridge.C3poRepo.Pool,otp_app :: event_bridge,repo:EventBridge.C3poRepo,timeout:15000,po​​ol_timeout:5000,适配器:Tds.Ecto,用户名:: ALSO_REDACTED,数据库::已删除,主机名::已删除,池:DBConnection .Poolboy],pak_data:“”,pak_header:“”,查询:%Tds.Query {handle:1,statement:nil},结果:%Tds.Result {columns:[],command: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中工作。

sql-server elixir ecto
1个回答
0
投票

在db配置中添加pool_size:然后重试

© www.soinside.com 2019 - 2024. All rights reserved.