Conexión a la base de datos de Azure para MySQL en npm / mysql

Recibo un error al conectarme a Azure Database for MySQL con el módulo mysql npm (versión 2.13.0):

Error:

/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. (/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) 

Código:

 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(); 

Conectarse a la base de datos a través de MySQL Workbench funciona bien.

Este es un problema conocido ya que nuestros ingenieros tienen una disscusión en https://social.msdn.microsoft.com/Forums/en-US/c8fedbcc-909d-41ce-8c72-0374f76fdf82/cannot-connect-from-nodejs?forum= Base de datos de Azure para MiSQL .

Y actualmente, he probado la solución provista por @Bradley Grainger en No se puede conectar la aplicación web de Azure – NodeJS a Azure Mysql . También podemos ver la esencia en https://github.com/mysqljs/mysql/commit/e3e123e9af7c0829a6c1417d911572a75b4a5f95 .

Actualmente, modifique el package.json como:

 "dependencies": { "mysql": "git://github.com/mysqljs/mysql#e3e123e9af7c0829a6c1417d911572a75b4a5f95" }, 

luego, ejecute npm install para instalar esta versión.

Debería funcionar como se espera.

Además, espere a que el mantenedor fusione este PR.