我无法使用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="data source=psegds-dev,5123;initial
catalog=*password*;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework""
C#不是我最强的语言,但我看不出什么是适用的,也不同于我的代码。非常感谢任何帮助。