Подключение к базе данных 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.

Другие вопросы по тегам