我花了最后一两天在ubuntu 12上设置unixODBC和freetds - 这本身并不是一个有趣的过程,但它现在可以同时使用sqsh和isql。我安装了node-odbc,我正在使用github readme中提供的代码片段来测试连接,但我总是得到
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 I中得到上述错误。有关为什么会发生这种情况的任何想法?有可能是我的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
提前感谢您的帮助!
答案 0 :(得分:3)
今天遇到这个问题,结果是我需要指定一个端口号作为连接字符串的一部分。 FYI。
答案 1 :(得分:1)
看起来我刚刚找到了解决方案,但我并不完全明白为什么。如果使用的连接字符串是:
"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。