node.js中的MySQL,尝试连接

时间:2016-08-17 20:07:31

标签: javascript mysql node.js

我无法使用node.js中的MySQL模块连接到数据库。我似乎无法找到确切的原因,而且资源似乎非常有限。根据我的研究,我在v4.0和v4.2中发现了类似的错误,但我运行的节点版本是v6.2.2。

var mysql = require('mysql');
var pool = mysql.createPool({
  connectionLimit : 10,      
  host            : 'psegds-dev',
  port        : '5123',
  user            : 'Admin',
  password        : 'password',
  database        : 'EROUNDS_ADMIN'
});

pool.getConnection(function(err, connection) {
    if(err) console.error(err);

    console.log("In getConnection");        
    //connection.release();

});

使用此代码,我收到以下错误:

In getConnection
{ Error: Handshake inactivity timeout
    at Handshake.<anonymous> (C:\node.js\node_modules\mysql\lib\protocol\Protocol.js:160:17)
    at emitNone (events.js:86:13)
    at Handshake.emit (events.js:185:7)
    at Handshake._onTimeout (C:\node.js\node_modules\mysql\lib\protocol\sequences\Sequence.js:126:8)
    at tryOnTimeout (timers.js:224:11)
    at Timer.listOnTimeout (timers.js:198:5)
    --------------------
    at Protocol._enqueue (C:\node.js\node_modules\mysql\lib\protocol\Protocol.js:141:48)
    at Protocol.handshake (C:\node.js\node_modules\mysql\lib\protocol\Protocol.js:52:41)
    at PoolConnection.connect (C:\node.js\node_modules\mysql\lib\Connection.js:136:18)
    at Pool.getConnection (C:\node.js\node_modules\mysql\lib\Pool.js:48:16)
    at Object.<anonymous> (C:\node.js\server.js:46:6)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
  code: 'PROTOCOL_SEQUENCE_TIMEOUT',
  fatal: true,
  timeout: 10000 }
error

有一个很长的暂停,并且在错误显示之前不会执行print语句,这会告诉我getConnection()函数失败。当我包含以下函数时:

connection.release();
connection.query(sql, function(err, rows, fields) 

然后我得到这样的类型错误:

                 connection.release();
                           ^
TypeError: Cannot read property 'release' of undefined
    at C:\node.js\server.js:69:15
    at Handshake.onConnect (C:\node.js\node_modules\mysql\lib\Pool.js:58:9)
    at Handshake.Sequence.end (C:\node.js\node_modules\mysql\lib\protocol\sequences\Sequence.js:85:24)
    at C:\node.js\node_modules\mysql\lib\protocol\Protocol.js:399:18
    at Array.forEach (native)
    at C:\node.js\node_modules\mysql\lib\protocol\Protocol.js:398:13
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

我在运行query()和release()函数时尝试使用池变量而不是连接变量。我已经尝试设置单个连接,与池相对,但使用类似的代码并得到相同的错误。我可以使用我的凭据登录服务器,所以我知道它们是正确的。

我从工作连接字符串

获得以下c#服务器代码
connection string=&quot;data source=psegds-dev,5123;initial 
catalog=*password*;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" 

C#不是我最强的语言,但我看不出什么是适用的,也不同于我的代码。非常感谢任何帮助。

0 个答案:

没有答案