Подключение к базе данных Azure для MySQL в npm/mysql
Я получаю сообщение об ошибке при подключении к базе данных Azure для MySQL с помощью модуля mysql npm (версия 2.13.0):
Ошибка:
/Users/sascha/Desktop/azure-mysql/index.js:19
if (error) throw error;
^
Error: ER_HANDSHAKE_ERROR: Bad handshake
at Handshake.Sequence._packetToError (/Users/sascha/Desktop/azure-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:52:14)
at Handshake.ErrorPacket (/Users/sascha/Desktop/azure-mysql/node_modules/mysql/lib/protocol/sequences/Handshake.js:103:18)
at Protocol._parsePacket (/Users/sascha/Desktop/azure-mysql/node_modules/mysql/lib/protocol/Protocol.js:280:23)
at Parser.write (/Users/sascha/Desktop/azure-mysql/node_modules/mysql/lib/protocol/Parser.js:75:12)
at Protocol.write (/Users/sascha/Desktop/azure-mysql/node_modules/mysql/lib/protocol/Protocol.js:39:16)
at TLSSocket.ondata (_stream_readable.js:528:20)
at emitOne (events.js:77:13)
at TLSSocket.emit (events.js:169:7)
at readableAddChunk (_stream_readable.js:146:16)
at TLSSocket.Readable.push (_stream_readable.js:110:10)
--------------------
at Protocol._enqueue (/Users/sascha/Desktop/azure-mysql/node_modules/mysql/lib/protocol/Protocol.js:141:48)
at Protocol.handshake (/Users/sascha/Desktop/azure-mysql/node_modules/mysql/lib/protocol/Protocol.js:52:41)
at Connection.connect (/Users/sascha/Desktop/azure-mysql/node_modules/mysql/lib/Connection.js:130:18)
at Object.<anonymous> (/Users/sascha/Desktop/azure-mysql/index.js:16:12)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Module.runMain [as _onTimeout] (module.js:467:10)
at Timer.listOnTimeout (timers.js:92:15)
Код:
var mysql = require("mysql");
var fs = require("fs");
var connection = mysql.createConnection({
host: "host",
user: "user@db",
password: "pw",
database: "scheme",
port: 3306,
ssl: {
ca: fs.readFileSync(__dirname + "/cert.pem")
},
insecureAuth: true
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});
connection.end();
Подключение к базе данных через MySQL Workbench работает нормально.
1 ответ
Это известная проблема, поскольку наши инженеры обсуждают ее по адресу https://social.msdn.microsoft.com/Forums/en-US/c8fedbcc-909d-41ce-8c72-0374f76fdf82/cannot-connect-from-nodejs?forum=AzureDatabaseforMySQL.
И в настоящее время я тестирую решение, предоставленное @Bradley Grainger, в разделе Не удается подключить веб-приложение Azure - NodeJS к Azure Mysql. Мы также можем увидеть суть по адресу https://github.com/mysqljs/mysql/commit/e3e123e9af7c0829a6c1417d911572a75b4a5f95.
В настоящее время, пожалуйста, измените package.json
как:
"dependencies": {
"mysql": "git://github.com/mysqljs/mysql#e3e123e9af7c0829a6c1417d911572a75b4a5f95"
},
затем беги npm install
установить эту версию.
Это должно работать как ожидалось.
Кроме того, пожалуйста, подождите, пока сопровождающий не объединит этот PR.