NodeJS 到 SQL 服务器连接不工作:套接字挂起问题

NodeJS to SQL Server Connection not working: socket hang up issue

这是我的 sql 连接的完整代码,我从 Whosebug 问题中获得的所有代码。 到处,我发现都在建议相同的代码,因此我也尝试了相同的代码。 我有一些其他应用程序使用与 NextJs 相同的连接并且它工作正常,但是,如果我只尝试使用 NodeJS 代码,它会给出一些套接字挂起错误(代码:'ESOCKET' 名称:'ConnectionError')。 请注意,TCP 已在远程服务器上配置,并且可以与其他应用程序正常工作。

感谢任何帮助,谢谢。

const express = require('express');
const fs = require('fs');
const path = require('path');
const cheerio = require("cheerio");
const sql = require('mssql');

require('dotenv').config(); //to use the env variables

// config for your database
var config = {
    user: process.env.DATABASE_USER,
    password: process.env.DATABASE_PASSWORD,
    server: process.env.DATABASE_HOST,
    database: process.env.SOMEDB,
    port: 14345, // process.env.DATABASE_PORT,
    options: {
        encrypt: true, // for azure
        trustServerCertificate: false // change to true for local dev / self-signed certs
    }
};

        // make sure that any items are correctly URL encoded in the connection string
        let appPool = new sql.ConnectionPool(config);
        
        //I got error on below connect
        sql.connect(config).then(function(pool) {
            //It never reaches here, it directly goes to the catch block
            app.locals.db = pool;
            const server = app.listen(3000, function () {
              const host = server.address().address
              const port = server.address().port
              console.log('Example app listening at http://%s:%s', host, port)
            })
          }).catch(function(err) {
            console.error('Error creating connection pool', err)
          });

我有同样的问题。 尝试使用 mssql 版本 6.0.1,它适用于我的代码,但我们肯定需要找出问题所在,因为我们不能想永远维护旧版本的包。

我一直在尝试通过不同的配置更改找到解决方案。 最后,我做了一个正确的配置,它工作正常,现在它正确连接并从 table.

返回数据
require('dotenv').config(); //to access the process.env params

const sql = require("mssql"); //mssql object


var dbConfig = {
    user: "ajay",
    password: "abcd123",
    server: "your_remote_sql_server_path",
    port: 1433,
    database: "your_database_name",
    options: {
        database: 'your_database_name',
        trustServerCertificate: true
    }
};

try {
        //connection config will be used here to connect to the local/remote db
        sql.connect(dbConfig)
            .then(async function () {
                // Function to retrieve the data from table
                const result = await sql.query`select top 1 * from table_name`
                console.dir(result)
                
            }).catch(function (error) {
                console.dir(error);
            });
    } catch (error) {
        console.dir(error);
    }

我不确定确切的问题是什么,但是根据之前的配置和这个配置,似乎将数据库名称添加到 options 已经解决了问题。

请确保将所有敏感数据保存到.env 文件中。 (您可以访问 PROCESS.env.parametername