Я пытался установить соединение между приложением Node.js и mysql, все перепробовал и не смог.
Я могу подключиться через приложение PHP. Мой порт по умолчанию, где 3306
Может ли кто-нибудь помочь мне решить эту проблему?
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root'
});
connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}
console.info('connected as id ' + connection.threadId);
});
[This is the error message I got,I can able to connect through my php application][1]
Это сообщение об ошибке, которое я получил, я могу подключиться через свое приложение php

Да, у меня есть доступ, на самом деле я пользователь root
Код ошибки, который я получаю, - PROTOCOL_CONNECTION_LOST.





Лучший подход для подключения к БД - использовать бассейны для подключения к БД.
Копирование с здесь
var mysql = require('mysql');
var pool = mysql.createPool({
host : 'example.org',
user : 'bob',
password : 'secret'
});
pool.getConnection(function(err, connection) {
// connected! (unless `err` is set)
connection.release();
});
Это также позволяет вам делать параллельные обращения к вашей базе данных.
Я использовал приведенный выше код, но все еще не преуспел. var pool = mysql.createPool ({хост: 'localhost', пользователь: 'root', пароль: 'root', база данных: 'Promotool'}); pool.getConnection (function (err, connection) {// connected! (если не установлен err) console.info (err); connection.release ();}); Получена ошибка {Ошибка: таймаут бездействия рукопожатия F: \ projects \ upload_promotool \ node_modules \ express \ lib \ router \ index.js: 281: 22 код: 'PROTOCOL_SEQUENCE_TIMEOUT', фатальный: true, тайм-аут: 10000}
Это странно. Можете ли вы попробовать указать тайм-аут вручную pool = require ('mysql'). CreatePool ({connectionLimit: 1000, connectTimeout: 60 * 60 * 1000, aquireTimeout: 60 * 60 * 1000, timeout: 60 * 60 * 1000,
Да. Это довольно странный материал. По-прежнему появляется этот код ошибки: «PROTOCOL_SEQUENCE_TIMEOUT», фатальный: true, тайм-аут: 10000} F: \ projects \ upload_promotool \ app.js: 23 connection.release (); ^ TypeError: невозможно прочитать свойство 'release' неопределенного
Если у вас есть 'release' of undefined, это означает, что ваш объект подключения не определен. убедитесь, что вы используете те же переменные, что и в функции обратного вызова
pool = require ('mysql'). createPool ({connectionLimit: 1000, connectTimeout: 60 * 60 * 1000, aquireTimeout: 60 * 60 * 1000, тайм-аут: 60 * 60 * 1000, хост: 'localhost', пользователь: 'root ', пароль:' root ', база данных:' Promotool '}); pool.getConnection (function (err, connection) {// подключен! (если не установлен err) console.info (err); connection.release ();});
Раскомментируйте "bind-address" и присвойте bind-address = "0.0.0.0". Для получения дополнительной информации обратитесь к этому, Устранение «сбоя канала связи» с помощью JDBC и MySQL
Имеет ли ваш сервер приложений разрешение на доступ к БД?