【问题标题】:Connecting to Azure Database for MySQL in npm/mysql在 npm/mysql 中连接到 Azure Database for MySQL
【发布时间】:2017-06-13 07:25:35
【问题描述】:

使用 mysql npm 模块(版本 2.13.0)连接到 Azure Database for MySQL 时出现错误:

错误:

/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 连接到数据库工作正常。

【问题讨论】:

    标签: mysql node.js azure azure-database-mysql


    【解决方案1】:

    这是一个已知问题,因为我们的工程师在https://social.msdn.microsoft.com/Forums/en-US/c8fedbcc-909d-41ce-8c72-0374f76fdf82/cannot-connect-from-nodejs?forum=AzureDatabaseforMySQL 进行了讨论。

    目前,我已经在Cannot connect Azure Web App - NodeJS to Azure Mysql 测试了@Bradley Grainger 提供的解决方案。我们也可以在https://github.com/mysqljs/mysql/commit/e3e123e9af7c0829a6c1417d911572a75b4a5f95 看到要点。

    目前请将package.json修改为:

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

    然后,运行npm install 来安装这个版本。

    它应该按预期工作。

    另外,请等待维护者合并此PR。

    【讨论】:

    • 感谢您的解决方法。这对我有用。我现在正在等待发布。
    猜你喜欢
    • 2021-12-13
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 2017-10-13
    • 2020-06-13
    相关资源
    最近更新 更多