【问题标题】:Elixir: Ecto/Tds error when connecting to SQL Server databaseElixir:连接到 SQL Server 数据库时出现 Ecto/Tds 错误
【发布时间】:2018-05-13 10:25:48
【问题描述】:

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

** (DBConnection.ConnectionError) 错误返回值:{:error, %Tds.Protocol{env: %{trans: >}, itcp: nil, opts: [密码: :已编辑,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}, 结果:%Tds.Result{columns: [], 命令: nil, num_rows: 0, rows: []}, sock: {:gen_tcp, #Port},状态::就绪,尾部:“”,事务:无,usock:无}}

我在此数据库的配置中获得的凭据是正确的——我使用 DBeaver 手动验证了它们。我相信我有能力对此进行调试,但我遇到了一些我不理解的错误消息。具体来说:

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

为了完整起见,这里是 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

我要问的是对错误消息的那一部分的含义有所了解,或者甚至可能对整个错误输出提供一些更一般的反馈。

以下是相关回购的两个配置实例。第一个有效的:

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】:

    添加 池大小: 在数据库配置中再试一次

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多