Ошибка: тайм-аут бездействия для рукопожатия в Node.js Модуль MYSQL
Я использую node-mysql
и большинство запросов. За работой. некоторые запросы не работают. Я пробовал каждую версию Node (от 0.5...) до (5.6.0), я также пробовал (4.0) и (4.1), ничего не помогает.
Я пытался измениться вручную, и не получилось. Я попытался изменить файл sequence
на: this._idleTimeout = -1;
и не помогло.
Я прочитал вопросы и GitHub, и ничего не помогло.
Я могу попытаться исправить это самостоятельно, но мне нужно больше информации. Где тайм-аут, почему? когда? что это за тип сообщения? Откуда пришло время ожидания?
MYSQL_ERROR { [Error: Handshake inactivity timeout]
code: 'PROTOCOL_SEQUENCE_TIMEOUT', fatal: true,
timeout: 10000 }
Ответы
Ответ 1
Хорошо, время ожидания исходит из строки файла Protocol.js: 162. Если вы выберете node-mysql, вы увидите, что это переменная "timeout" для запросов. Если для тайм-аута установлено значение, намного превышающее 10000 по умолчанию, ошибка должна исчезнуть. Примером является
pool = require('mysql').createPool({
connectionLimit : 1000,
connectTimeout : 60 * 60 * 1000,
acquireTimeout : 60 * 60 * 1000,
timeout : 60 * 60 * 1000,
host : process.env.DB_HOST,
user : process.env.DB_USERNAME,
password : process.env.DB_PASSWORD,
database : process.env.DB_DATABASE
});
Вы также можете изменить время ожидания в файле Sequence.js(node_modules/mysql/lib/protocol/sequence/Sequence.js)
this._timeout = 100000;
Ответ 2
Если вы используете сервисы Amazon, я смог решить эту проблему, изменив разрешенные IP-адреса в настройках безопасности или изменив порты открытых соединений.
Ответ 3
что вы положили на IP от Amazon? Попытка подключиться через узел и получить тайм-аут :(
Ответ 4
Для тех, кто развертывает AWS
и сталкивается с этой ошибкой, вам нужно внести изменения в группу безопасности вашей базы данных/кластера и add an inbound rule
, где source
- это группа безопасности вашего экземпляра/ов..
Входящее правило должно выглядеть следующим образом:
Type: MySQL/Aurora
Protocol: TCP (default)
Port: 3306 (default)
Source: <security group of instance>
Description: <optional>