Итак, я новичок в node.js и пытаюсь установить соединение с моей локальной базой данных, чтобы позже вставить данные. Однако, когда я выполняю свой код, он выдает ошибку соединения с кодом ошибки ESOCKET. Я пробовал разные способы структурировать мою строку подключения, но это всегда дает мне эту ошибку.
Как я уже говорил, я новичок в nodejs, поэтому я не совсем уверен, является ли проблема моей строкой подключения или портом он использует (1433) или что-то совсем другое.
код:
const sql = require('mssql');
const config = {
user: 'test',
password: 'test',
server: '.',
database: 'Parkings'
}
async function databaseconn(parking){
try{
let pool = await sql.connect(config);
await pool.request().query(`
if not exists (select 1 from [Parking] where [Name] = '${parking.name}')
begin
insert into Parking ([Name], [Type], [Latitude], [Longtitude], [MaxCap])
values ('${parking._name}', '${parking._type}', ${parking._latitude}, ${parking._longitude}, ${parking._maxcap})
end
`);
await pool.request().query(`
insert into [Entry] ([TimeDay], [Available], [ParkingId])
values (${p._time}, ${p._available}, (select Id from Parking where Name = '${p._name}'))
`);
pool.close();
} catch (err){
console.log(err);
}
}
ошибка:
ConnectionError: Failed to connect to .:1433 - getaddrinfo ENOTFOUND .
at Connection.<anonymous> (D:\Documenten\2019-2020\ParkingProject\nodejs_serverapp\node_modules\mssql\lib\tedious\connection-pool.js:68:17)
at Object.onceWrapper (events.js:428:26)
at Connection.emit (events.js:321:20)
at Connection.socketError (D:\Documenten\2019-2020\ParkingProject\nodejs_serverapp\node_modules\tedious\lib\connection.js:1290:12)
at D:\Documenten\2019-2020\ParkingProject\nodejs_serverapp\node_modules\tedious\lib\connection.js:1116:21
at GetAddrInfoReqWrap.callback (D:\Documenten\2019-2020\ParkingProject\nodejs_serverapp\node_modules\tedious\lib\connector.js:158:16)
at GetAddrInfoReqWrap.onlookupall [as oncomplete] (dns.js:76:17) {
code: 'ESOCKET',
originalError: ConnectionError: Failed to connect to .:1433 - getaddrinfo ENOTFOUND .
at ConnectionError (D:\Documenten\2019-2020\ParkingProject\nodejs_serverapp\node_modules\tedious\lib\errors.js:13:12)
at Connection.socketError (D:\Documenten\2019-2020\ParkingProject\nodejs_serverapp\node_modules\tedious\lib\connection.js:1290:56)
at D:\Documenten\2019-2020\ParkingProject\nodejs_serverapp\node_modules\tedious\lib\connection.js:1116:21
at GetAddrInfoReqWrap.callback (D:\Documenten\2019-2020\ParkingProject\nodejs_serverapp\node_modules\tedious\lib\connector.js:158:16)
at GetAddrInfoReqWrap.onlookupall [as oncomplete] (dns.js:76:17) {
message: 'Failed to connect to .:1433 - getaddrinfo ENOTFOUND .',
code: 'ESOCKET'
},
name: 'ConnectionError'
}
картинка
РЕШЕНИЕ
после многих неприятностей я нашел решение проблемы благодаря сообщению на github. Вы должны включить протокол TCP / IP на вашем сервере sql и перезапустить его. Руководство по ссылкам ниже:
https://github.com/tediousjs/tedious/issues/799
https://www.blackbaud.com/files/support/infinityinstaller/content/installermaster/tkenablenamedpipesandtcpipconnections.htm