请求错误:在Node.js中mssql连接断开 - 读取ECONNRESET

4
我正在使用node-mssql连接,链接如下:https://www.npmjs.com/package/mssql 当我批量向mssql表中插入数据时,它会失去连接。
当我一次性插入4行以上的数据时,它会抛出错误。
import * as SQL from "mssql";

const conn = new sql.ConnectionPool({
   user: "XXXXXXXXX",
   password: "XXXXXXXXXXX",
   server: "XXXXXXXXXXX",
   database: "TESTDATA",
   options: {
    instanceName: "XXX"
   },
   pool: {
     max: 10,
     min: 0,
     idleTimeoutMillis: 30000
   }
 });

conn.connect()

var values = [[john,1,4,80],[jenny,null,4,78],[abhi,3,4,null],[ram,4,4,90]]

const table = new sql.Table('CLASS_TABLE');
table.columns.add('NAME', sql.NVarChar(15));
table.columns.add('ROLL', sql.Int);
table.columns.add('CLASS', sql.Int);
table.columns.add('MARKS', sql.Int);

for (let i = 0; i < values.length; i++) {
      let row_data = values[i];
      if (row_data) {
        table.rows.add(row_data[0], row_data[1], row_data[2], row_data[3], row_data[4])
      }
    }

const request = new sql.Request(conn);
request.bulk(table, (err, result) => {
  throw err
});

错误:RequestError:连接丢失 - 读取ECONNRESET

(意思是请求出错,连接丢失,无法读取数据)
2个回答

2
在您的连接选项中,请添加stream:true以插入多条记录。最初的回答。
const conn = new sql.ConnectionPool({
   user: "XXXXXXXXX",
   password: "XXXXXXXXXXX",
   server: "XXXXXXXXXXX",
   database: "TESTDATA",
   options: {
    instanceName: "XXX"
   },
   stream:true,
   pool: {
     max: 10,
     min: 0,
     idleTimeoutMillis: 30000
   }
 });

0

我猜测有一个参数决定了一次允许的最大数据量。

虽然我不熟悉mssql,但在MySQL中,当我们想要一次性插入大量数据时,我们会将参数max_allowed_packet更改为较大的值。

因此,请检查是否有类似的参数并进行更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接