我正在尝试学习 Node.js 并创建了一个简单的项目来查询本地数据库。但我无法查找实例错误消息。
我已经检查了 services.msc 中运行的 SQL Server 服务
我已验证 TCP/IP 已启用
我尝试过使用用户名和密码,也尝试过不使用它。我在 SQL Server Management Studio 中连接到 localdb 作为(localdb)\v11.0
下面是属性的屏幕截图
我做错了什么?实际的用户名和密码应该是什么?服务器名称应该是什么?
const sql = require('mssql');
// config for your database
const config = {
user: 'mywindows username',
password: 'my windows password',
server: '(localdb)\\v11.0',
database: 'test',
options: {
encrypt: true
}
};
console.log('starting sql');
var connection = new sql.connect(config, function(err) {
console.log(err);
var request = new sql.Request(connection);
request.query('select * from employees', function(err, recordset) {
if(err) // ... error checks
console.log('Database connection error');
console.dir("User Data: "+recordset);
});
});
sql.close();
console.log('ending sql');
});
app.listen(3002, () => {
console.log('Listening on port 3002');})
下面是错误信息
{ ConnectionError:无法在(localdb)上查找实例 -
getaddrinfo ENOTFOUND (localdb)
在 Connection.tedious.once.err (C:\Users\vndbsubramaniam\Desktop\React
项目\ReactWithSql\node_modules\mssql\lib\tedious.js:244:17)
在 Object.onceWrapper (events.js:285:13)
在 Connection.emit (events.js:197:13)
在 InstanceLookup.instanceLookup (C:\Users\vndbsubramaniam\Desktop\React
项目\ReactWithSql\node_modules\tedious\lib\connection.js:945:16)
在 sender.execute (C:\Users\vndbsubramaniam\Desktop\React 项目\ReactWithSql\node_modules\tedious\lib\instance-lookup.js:66:13)
在 GetAddrInfoReqWrap.invokeLookupAll [作为回调] (C:\Users\vndbsubramaniam\Desktop\React
项目\ReactWithSql\node_modules\tedious\lib\sender.js:43:16)
在 GetAddrInfoReqWrap.onlookupall [as oncomplete] (dns.js:70:17) 代码:'EINSTLOOKUP',originalError:{ ConnectionError:无法
在 (localdb) 上查找实例 - getaddrinfo ENOTFOUND (localdb)
在 ConnectionError (C:\Users\vndbsubramaniam\Desktop\React 项目\ReactWithSql\node_modules\tedious\lib\errors.js:13:12)
在 InstanceLookup.instanceLookup (C:\Users\vndbsubramaniam\Desktop\React
项目\ReactWithSql\node_modules\tedious\lib\connection.js:945:32)
在 sender.execute (C:\Users\vndbsubramaniam\Desktop\React 项目\ReactWithSql\node_modules\tedious\lib\instance-lookup.js:66:13)
在 GetAddrInfoReqWrap.invokeLookupAll [作为回调] (C:\Users\vndbsubramaniam\Desktop\React
项目\ReactWithSql\node_modules\tedious\lib\sender.js:43:16)
在 GetAddrInfoReqWrap.onlookupall [未完成] (dns.js:70:17)
信息:
'无法在 (localdb) 上查找实例 - getaddrinfo ENOTFOUND (localdb)',
code: 'EINSTLOOKUP' }, name: 'ConnectionError' } 数据库连接错误
经过几个小时的努力终于在这里找到了答案SQL 到节点的连接 https://stackoverflow.com/questions/33709807/how-to-connect-to-sql-server-with-windows-authentication-from-node-js-using-mssq
看来我必须添加 msnodesqlv8 包并使用将驱动程序语法添加到配置中。
app.get('/test', (req, res) => {
const sql = require('mssql/msnodesqlv8');
// config for your database
const config = {
database: 'test',
server: '(localdb)\\v11.0',
driver: 'msnodesqlv8',
options : {
trustedConnection : true
}
};
console.log('starting sql');
const pool = new sql.ConnectionPool(config);
pool.connect().then(() => {
//simple query
pool.request().query('select * from employees', (err, result) => {
if(err) res.send(err)
else{
return res.json({
data : result.recordset
})
}
})
sql.close();
})
console.log('ending sql');
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)