Получение ошибки «сервер закрыл соединение» для модуля mysql из node.js

#mysql #node.js #database #database-connection

#mysql #node.js #База данных #подключение к базе данных

Вопрос:

Я пытаюсь запросить таблицу из node.js. Ниже приведен мой код.Но я получаю ошибку типа «сервер закрыл соединение». Не уверен, какую ошибку я делаю.

 var mysql = require('mysql');

var con = mysql.createConnection({
  host: "10.90.103.4",
  user: "someuser",
  password: "********",
  database: "db",
  port: 1521
});

console.log("---------------------------");
console.log(con);
console.log("---------------------------");


con.connect(function(err) {
  if (err) throw err;
  con.query("select * from CLE_EXCEPTIONRECORD where CORRELATIONID='983b2f58-e0eb-49cb-b76c-9b8107de3edc'", function (err, result, fields) {
    if (err) throw err;
    console.log(result);
  });
});
  

Но я получаю приведенную ниже ошибку. Пожалуйста, предложите мне получить ответ об успешном завершении.

 Connection {
  domain: null,
  _events: {},
  _eventsCount: 0,
  _maxListeners: undefined,
  config:
   ConnectionConfig {
     host: '10.90.103.4',
     port: 1521,
     localAddress: undefined,
     socketPath: undefined,
     user: 'THREE_SDEV_EXP_USER',
     password: 'PA55WORD',
     database: 'CITA',
     connectTimeout: 10000,
     insecureAuth: false,
     supportBigNumbers: false,
     bigNumberStrings: false,
     dateStrings: false,
     debug: undefined,
     trace: true,
     stringifyObjects: false,
     timezone: 'local',
     flags: '',
     queryFormat: undefined,
     pool: undefined,
     ssl: false,
     multipleStatements: false,
     typeCast: true,
     maxPacketSize: 0,
     charsetNumber: 33,
     clientFlags: 455631 },
  _socket: undefined,
  _protocol:
   Protocol {
     domain: null,
     _events: {},
     _eventsCount: 0,
     _maxListeners: undefined,
     readable: true,
     writable: true,
     _config:
      ConnectionConfig {
        host: '10.90.103.4',
        port: 1521,
        localAddress: undefined,
        socketPath: undefined,
        user: 'THREE_SDEV_EXP_USER',
        password: 'PA55WORD',
        database: 'CITA',
        connectTimeout: 10000,
        insecureAuth: false,
        supportBigNumbers: false,
        bigNumberStrings: false,
        dateStrings: false,
        debug: undefined,
        trace: true,
        stringifyObjects: false,
        timezone: 'local',
        flags: '',
        queryFormat: undefined,
        pool: undefined,
        ssl: false,
        multipleStatements: false,
        typeCast: true,
        maxPacketSize: 0,
        charsetNumber: 33,
        clientFlags: 455631 },
     _connection: [Circular],
     _callback: null,
     _fatalError: null,
     _quitSequence: null,
     _handshake: false,
     _handshaked: false,
     _ended: false,
     _destroyed: false,
     _queue: [],
     _handshakeInitializationPacket: null,
     _parser:
      Parser {
        _supportBigNumbers: false,
        _buffer: <Buffer >,
        _nextBuffers: [Object],
        _longPacketBuffers: [Object],
        _offset: 0,
        _packetEnd: null,
        _packetHeader: null,
        _packetOffset: null,
        _onError: [Function: bound handleParserError],
        _onPacket: [Function: bound ],
        _nextPacketNumber: 0,
        _encoding: 'utf-8',
        _paused: false } },
  _connectCalled: false,
  state: 'disconnected',
  threadId: null }
---------------------------
F:johnynode_from_homenode_modulesmysqllibprotocolProtocol.js:112
  var err = new Error('Connection lost: The server closed the connection.');
            ^
Error: Connection lost: The server closed the connection.
    at Protocol.end (F:johnynode_from_homenode_modulesmysqllibprotocolPro
tocol.js:112:13)
    at Socket.<anonymous> (F:johnynode_from_homenode_modulesmysqllibConnec
tion.js:97:28)
    at Socket.<anonymous> (F:johnynode_from_homenode_modulesmysqllibConnec
tion.js:502:10)
    at emitNone (events.js:111:20)
    at Socket.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1064:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
    at Protocol._enqueue (F:johnynode_from_homenode_modulesmysqllibprotoco
lProtocol.js:144:48)
    at Protocol.handshake (F:johnynode_from_homenode_modulesmysqllibprotoc
olProtocol.js:51:23)
    at Connection.connect (F:johnynode_from_homenode_modulesmysqllibConnec
tion.js:118:18)
    at Object.<anonymous> (F:johnynode_from_hometestselenium_old.js:16:5)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)

F:johnynode_from_home>
  

Ниже приведена моя фактическая таблица. Когда я запрашиваю из putty, я могу получить ответ.

введите описание изображения здесь

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

1. Вы выдаете ошибку в двух местах вашего кода. Вы уверены, что ошибка возникает из-за запроса, а не при подключении?

2. ошибка возникает при подключении. На самом деле ошибка в подключении

3. Вероятно, это означает, что соединение не может быть установлено, потому что сервер закрыл соединение при подключении. Проверьте, можете ли вы связаться с ним с помощью telnet на указанном порту и действительно ли он отвечает протоколом mysql (какая-то тарабарщина, заканчивающаяся «mysql_native_password»)

4. Telnet работал нормально (telnet 10.90.103.4 1521). Я даже запрашивал у putty. Также создано новое исходящее правило для этого порта в брандмауэре. Все еще возникает та же проблема. Это из-за версии узла или чего-то еще?