【问题标题】:Node-odbc unable to connect to mssqlNode-odbc 无法连接到 mssql
【发布时间】:2012-11-03 02:46:51
【问题描述】:

我花了最后一两天在 ubuntu 12 上设置 unixODBC 和 freetds - 这本身并不是一个有趣的过程,但它现在可以同时使用 sqsh 和 isql。我已经安装了 node-odbc 并且我正在使用github readme 中提供的代码 sn-p 来测试连接,但我总是得到

 S1000:1:0:[unixODBC][FreeTDS][SQL Server]Unable to connect to data source
 WARNING: ev_unref is deprecated, use uv_unref
 [Error: Error opening database]

使用 isql 我运行isql -v SERVER user pass(使用正确的凭据..),然后在连接后运行use DATABASE,一切正常,我可以正常运行查询。我在 js 中的连接字符串是

 "DRIVER={FreeTDS};SERVER=SERVER;UID=user;PWD=pass;DATABASE=DATABASE"

这与用于连接 isql 的凭据完全匹配,但在 Node 中我得到了上述错误。关于为什么会发生这种情况的任何想法?是否可以定位我的 odbc.ini 和 odbcinst.ini 文件或类似的东西?

仅供参考:

/etc/odbc.ini:

[SERVER]
Driver      = FreeTDS
Trace       = No
Server      = SERVER
Port        = 1433
Database    = DATABASE
UsageCount  = 1
TDS_Version = 7.0

/etc/odbcinst.ini:

[FreeTDS]
Description = FreeTDS
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/libtdsS.so
FileUsage   = 1
CPTimeout   = 5
CPReuse     = 20
Threading   = 1

提前感谢您的帮助!

【问题讨论】:

    标签: sql-server node.js unixodbc


    【解决方案1】:

    今天遇到了这个问题,最后是我需要指定一个端口号作为连接字符串的一部分。仅供参考。

    【讨论】:

      【解决方案2】:

      看起来我刚刚找到了解决方案,尽管我不完全明白为什么。如果使用的连接字符串是:

      "DRIVER={FreeTDS};SERVER=SERVER;UID=user;PWD=pass;DATABASE=DATABASE"
      

      然后由于某种原因它根本不起作用,我尝试将 SERVER 设置为 IP 和机器的实际名称......没有运气。但是,如果我将连接字符串更改为使用 SERVERNAME 或 DSN(字符串中只能包含 SERVER、SERVERNAME 或 DNS 之一)并且我提供了机器名称,那么它工作正常,我无法让它与 IP 一起工作我尝试了什么。所以,总而言之,对我有用的连接字符串是:

      "DRIVER={FreeTDS};SERVERNAME=SERVERNAME;UID=user;PWD=pass;DATABASE=DATABASE"
      

      这个问题的关键似乎在于SQLDriverConnect。

      【讨论】:

      • 我们有同样的问题。我们的解决方案也是一样的。配置 FreeTDS 并使用 SERVERNAME 而不是 SERVER ...这现在需要我们分发和维护配置文件,而不是仅仅拥有一个连接字符串:(
      猜你喜欢
      • 1970-01-01
      • 2012-08-28
      • 2012-12-02
      • 2016-10-19
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      相关资源
      最近更新 更多