Почему мой скрипт node js не может подключиться к моей базе данных mssql, работающей в docker, но управление Microsoft SQL Server может

#node.js #sql-server

#node.js #sql-сервер

Вопрос:

Я пытаюсь подключить скрипт node js к серверу базы данных MsSQL, но не удается.

Однако мое управление Microsoft SQL Server может подключаться к базе данных.

node.js код

 var Connection = require('tedious').Connection;  
var config = {  
    server: "172.168.200.35",
    dialect: "mssql",
    port:51433,
    authentication: {
        type: 'default',
        options: {
            userName: 'testuser',
            password: 'abc123'
        }
    },
    options: {
        database: 'IoTDb'
    }
};  
var connection = new Connection(config);  
// Attempt to connect and execute queries if connection goes through
connection.on("connect", err => {
if (err) {
    console.error(err.message);
} else {
    executeStatement();
}
});
 

При запуске кода я получаю эту ошибку

Failed to connect to 172.168.200.35:51433:1433 - getaddrinfo ENOTFOUND 172.168.200.35:51433

Я не понимаю, почему не удается подключить порт 1433 , поскольку порт определяется как 51433

Однако, когда я пытаюсь подключиться к базе данных через эту информацию для входа (такую же, как переменная конфигурации узла) введите описание изображения здесь

Он подключается, и я получаю это представление над базой данных введите описание изображения здесь

Для получения информации о базе данных, она запущена через docker на другом компьютере, но доступна

Я переместил port в options , и теперь ошибка такая

Failed to connect to 172.168.200.35:51433:51433 - getaddrinfo ENOTFOUND 172.168.200.35:51433

Комментарии:

1. SSMS — это не что иное, как клиентское приложение, такое же, как ваше приложение. Если один завершается успешно, а другой терпит неудачу, проблема в коде.

2. Возможно, я ошибаюсь, но nodejs не должен подключаться к 51433 not 1433

3. В моей переменной конфигурации я определил порт как 51433

4. Ошибка гласит Failed to connect to 172.168.200.35:1433 . Это не тот же порт. Вы уверены, что установили правильный параметр?

5. Я вижу. Я добавил порт на сервер в node, и можно увидеть новую ошибку

Ответ №1:

Как показывает эта проблема, порт должен быть указан в options :

 var config = {  
    server: "172.168.200.35",
    dialect: "mssql",
...
    options: {
        database: 'IoTDb',
        port:51433,
    }
};