Когда закрыть соединение MySQL с помощью node -mysql? - программирование
Подтвердить что ты не робот

Когда закрыть соединение MySQL с помощью node -mysql?

В настоящее время используется: https://github.com/felixge/node-mysql

У меня есть следующий код:

var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'me',
    password : 'secret',
    database : 'Database1'
});
app.put('/api/upload', function(req, res, next)
{
    connection.connect();
    doMultipleQueries(function(err)
    {
        connection.end();
    });          
};

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

events.js:68
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: Cannot enqueue Handshake after invoking quit.
    at Protocol._validateEnqueue (/Users/anon/Desktop/project Web/node_modules/mysql/lib/protocol/Protocol.js:110:16)

Я должен оставить соединение открытым до тех пор, пока сервер не умрет?

UPDATE: Когда я перемещаю mysql.createConnection в функцию запроса запроса следующим образом:

var connection = null; 
app.put('/api/upload', function(req, res, next)
{
    connection = mysql.createConnection({
        host     : 'localhost',
        user     : 'me',
        password : 'secret',
        database : 'Database1'
    });
    connection.connect();
    doMultipleQueries(function(err)
    {
        connection.end();
    });          
};

Он отлично работает. Означает ли это, что connection.end() закрывает создание mysql.createConnection и не может быть повторно подключено?

4b9b3361

Ответ 1

connection.end() выполняет эту работу независимо от фатальной ошибки. Если возникает фатальная ошибка до отправки пакета COM_QUIT, аргумент err будет передан обратному вызову, но соединение будет прекращено независимо от этого.

Также проверьте метод destroy(). Это приведет к немедленному завершению базового сокета.

Вы можете добавить обработчик ошибок.

https://github.com/felixge/node-mysql/blob/master/Readme.md#error-handling

connection.on('error', function() {});

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

Проверьте здесь. Он показывает подключение обратно после разъединения.

https://github.com/felixge/node-mysql/blob/master/Readme.md#server-disconnects

Ответ 2

Я считаю, что правильный способ - просто получить соединение для своего приложения при запуске и end(), когда ваше приложение закрывается.