RequestError: соединение потеряно - прочитайте ECONNRESET - PullRequest
0 голосов
/ 28 октября 2019

Я новичок в mssql, получая сообщение об ошибке при развертывании его в моей среде разработки, но на локальном компьютере он работает нормально только для конкретного запроса, он не работает

Вот мой код

 return Order.query()
.joinEager('[shipments.shipmentQuantities.lineItem, lineItems.shipmentQuantities]')
.findById(id);

с использованием nodejs с версией 10 и возражением 1.4.0

Вот мой файл подключения

database: {
  client: 'mssql',
  connection: {
    host: process.env.DB_HOST,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME,
    charset: 'utf8',
    stream: true,
       options: process.env.ENABLE_DB_SSL ? {
       port: 1433,
       database: process.env.DB_NAME,
       encrypt: true,
    } : undefined,
   },
    debug: false,
  },

Сведения об ошибке

RequestError: Connection lost - read ECONNRESET 
at handleError (/src/node_modules/mssql/lib/tedious.js:519:15) 
at Connection.emit (events.js:203:15) 
at Connection.socketError (/src/node_modules/tedious/lib/connection.js:1028:14) 
at Socket.<anonymous> (/src/node_modules/tedious/lib/connection.js:878:18) 
at Socket.emit (events.js:203:15) 
at emitErrorNT (internal/streams/destroy.js:91:8) 
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3) 
at process._tickCallback (internal/process/next_tick.js:63:19) 

Для начальной установки БД яс использованием knex здесь начальный код

import body = require('koa-body');
import compress = require('koa-compress');
import Objection = require('objection');
import errorHandler = require('koa-json-logger-next');
import responseTime from 'koa-response-time-next/lib';
import config from './configuration';
import * as Koa from 'koa';
const Model = Objection.Model;

export default class Config {

   constructor(private app: Koa) {
   this.app = app;
 }

 public build() {
   // db setup
  const knex = require('knex')(config.database);
  Model.knex(knex);
  this.app.use((ctx: Koa.Context, next: () => Promise<any>) => {
  ctx.knex = knex;
  return next();
  });
  // return response time in X-Response-Time header
  this.app.use(responseTime());

  // HTTP compression
   this.app.use(compress({}));

  // parse request body into ctx.request.body
  this.app.use(body());

  // Global Error handling
  this.app.use(errorHandler({
  // As this is behind the api gateway, surface errors
  surfaceErrors: true,
  }));

  return config;
}

}

1 Ответ

0 голосов
/ 29 октября 2019

Можете ли вы попробовать выполнить настройку, указанную ниже. Если экземпляр DB также работает на Azure:

knex({
  client : 'mssql',
  connection: {
    database: 'mydatabase',
    server: 'myserver.database.windows.net',
    user: 'myuser',
    password: 'mypass',
    port: 1433,
    connectionTimeout: 30000,
    options: {
      encrypt: true
    }
  }
});

Если экземпляр DB работает на Azure, то для свойства encrpt должно быть установлено значение true.

Source: https://github.com/knex/knex/wiki/Recipes

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...