【问题标题】:Nodejs and Sql server from linux来自 linux 的 Nodejs 和 Sql 服务器
【发布时间】:2014-05-11 07:08:21
【问题描述】:

我正在尝试使用 nodejs 从 ubuntu (kubuntu 13.04) 连接到 sql server db! (SQL 服务器 2012) 我在看节点odbc .. 所以.. 我开始安装 FreeTds,然后是 unixOdbc,然后启动:npm install odbc

1) 我这样配置文件“etc/freetds/freetds.conf”:

[FreeTDS]
host = gerry_win7
port = 1433
tds_version = 8.0
client charset = UTF-8

2) 安装 sqsh (sudo apt-get install sqsh) 并尝试连接

sqsh -S FreeTDS -U trm1 -P user

并执行查询:完美运行!

3) 然后,我尝试以这种方式配置 ODBC 访问: 文件“/etc/odbcinst.ini”:

[FreeTDS]
Description = TDS driver
Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/i386-linux-gnu/odbc/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1

文件“/etc/odbc.ini”:

[FreeTDS]
Driver = FreeTDS
Description = ODBC connectin via FreeTDS
Trace = No
Servername = gerry_win7
Database = testsql
UID = trm1
PWD = user
Port = 1433

4) 使用带有 nodejs 的示例代码,我收到以下错误: 代码:

var cn = 'DRIVER={FreeTDS};SERVER=gerry_win7;UID=trm1;PWD=user;DATABASE=testsql';
var Database = require('odbc').Database, db = new Database();
db.open(cn, function(err){
    if (err) {return console.log(err);}
});

错误:

[unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[Error: Error opening database]

但是,正如我之前所写的,使用“sqsh”客户端可以进行连接:我可以运行查询! 有人可以帮我理解我做错了什么吗?

【问题讨论】:

  • 很可能不是问题,但tds_version 不应该是tds version 有空格吗?
  • 您可能还想在连接字符串中尝试使用SERVERNAME 而不是SERVER
  • 是的对不起..“tds版本”..我在帖子中写错了但在配置文件中是正确的..我试图写SERVERNAME但错误是一样的..跨度>

标签: linux node.js odbc


【解决方案1】:

如果我在其中指定 DRIVER,这是我将使用的连接字符串:

"DRIVER={FreeTDS};SERVERNAME=gerry_win7;DATABASE=testsql;UID=trm1;PWD=user;AutoTranslate=yes"

如果您想使用您在/etc/odbc.ini 中配置的 DSN,那么您需要这样做:

"DSN=FreeTDS;UID=trm1;PWD=user;DATABASE=testsql"

使用sqsh 命令进行测试可能只使用/etc/freetds/freetds.conf 中的配置信息(需要引用)。最好使用 isql 命令测试您的 ODBC 配置(节点外),例如:

$ isql FreeTDS trm1 user

其中 FreeTDS 是在 /etc/odbc.ini 中配置的 DSN。

您的配置可能有点混乱,因为驱动程序名称和 DSN 名称都是 FreeTDS。我个人觉得使用服务器名称或其他标识符作为/etc/odbc.ini 中指定的DSN 名称更有帮助。我会在您的 odbc.ini 中建议这样的内容:

[gerry]
Driver = FreeTDS
Description = ODBC connectin via FreeTDS
Trace = No
Servername = gerry_win7
Database = testsql
UID = trm1
PWD = user
Port = 1433

然后使用这个连接字符串:

"DSN=gerry;UID=trm1;PWD=user;DATABASE=testsql"

这样做,如果您想使用 SQL Server Native Client 11.0,您可能只需更改 odbc.ini 文件中的驱动程序条目,如果您达到了这一点。 :)

【讨论】:

  • 非常感谢!!...只有一件事:在 odbc.ini 配置中,参数不是“Servername”而是“Server”(我看到了 Servername 不起作用..我发现一个错误的例子)..
  • 很高兴它对你有用。关于“Servername”参数很有趣。这就是我在我的 odbc.ini 中使用的,它可以工作。只要你有你的工作,那就是最重要的。 :)
猜你喜欢
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
相关资源
最近更新 更多