ER_HANDSHAKE_ERROR:握手错误-使用node-mysql连接到外部数据库

时间:2019-10-23 16:00:33

标签: javascript mysql node.js node-mysql

我对node-mysql很陌生,想连接到外部数据库。数据库已启动并正在运行,因为我能够使用相同的凭据(甚至通过MySQL Administrator工具)通过mysql CLI连接到它。服务器的MySQL版本是“ 5.1.60-log MySQL Community Server”。但是,使用mysql-node-module时,出现以下错误:

C:\Users\JohnDoe\databaseIntegration\node_modules\mysql\lib\protocol\Parser.js:437
      throw err; // Rethrow non-MySQL errors
      ^

Error: ER_HANDSHAKE_ERROR: Bad handshake
    at Handshake.Sequence._packetToError (C:\Users\JohnDoe\databaseIntegration\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
    at Handshake.ErrorPacket (C:\Users\JohnDoe\databaseIntegration\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18)
    at Protocol._parsePacket (C:\Users\JohnDoe\databaseIntegration\node_modules\mysql\lib\protocol\Protocol.js:291:23)
    at Parser._parsePacket (C:\Users\JohnDoe\databaseIntegration\node_modules\mysql\lib\protocol\Parser.js:433:10)
    at Parser.write (C:\Users\JohnDoe\databaseIntegration\node_modules\mysql\lib\protocol\Parser.js:43:10)
    at Protocol.write (C:\Users\JohnDoe\databaseIntegration\node_modules\mysql\lib\protocol\Protocol.js:38:16)
    at Socket.<anonymous> (C:\Users\JohnDoe\databaseIntegration\node_modules\mysql\lib\Connection.js:91:28)
    at Socket.<anonymous> (C:\Users\JohnDoe\databaseIntegration\node_modules\mysql\lib\Connection.js:525:10)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    --------------------
    at Protocol._enqueue (C:\Users\JohnDoe\databaseIntegration\node_modules\mysql\lib\protocol\Protocol.js:144:48)
    at Protocol.handshake (C:\Users\JohnDoe\databaseIntegration\node_modules\mysql\lib\protocol\Protocol.js:51:23)
    at Connection.connect (C:\Users\JohnDoe\databaseIntegration\node_modules\mysql\lib\Connection.js:119:18)
    at Object.<anonymous> (C:\Users\JohnDoe\databaseIntegration\test\basicStuff\testconnect.js:15:5)
    at Module._compile (module.js:577:32)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.runMain (module.js:611:10)

即使使用数据库的本地1:1副本,我也可以连接,进行查询和console.log结果。因此,我猜测node-mysql数据库兼容性肯定有问题。这是“我写的”代码:

const mysql = require('mysql');

var con = mysql.createConnection({
    user: 'myuser',
    password: 'mypw',
    database: 'dbdb',
    host: 'dbip',
    port: 'dbport',
    insecureAuth: true
});

con.connect(function(err) {
    if (err) throw err;
    console.log("Connected!");

    con.query(`SELECT * FROM mytable;`, function (err, result) {
        if (err) throw err;
        console.log("Result: " + JSON.stringify(result));
    });
});

这里可能是什么问题,我该如何解决?谢谢!

0 个答案:

没有答案