Getting Error "Error: Cannot enqueue Handshake" Using node-mysql For MS SQL Server and node App Connectivity?
Getting Error "Error: Cannot enqueue Handshake" Using node-mysql For MS SQL Server and node App Connectivity?
我使用 node.js 开发了 REST api。我的 api 在我的 macbook 上是 运行。我正在尝试使用 node-mysql 模块在另一台机器上访问 MS SQL 服务器 运行,但是在尝试创建连接时出现以下错误:
获取/联系人/200 12.467 毫秒 - -
events.js:141
扔呃; // 未处理的 'error' 事件
^
错误:调用退出后无法将握手排队。
在 Protocol._validateEnqueue (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/mysql/lib/protocol/Protocol.js:202:16)
在 Protocol._enqueue (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/mysql/lib/protocol/Protocol.js:135:13)
在 Protocol.handshake (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/mysql/lib/protocol/Protocol.js:52:41)
在 Connection.connect (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/mysql/lib/Connection.js:123:18)
在 read_json_file (/Users/abc/Desktop/NodeProjects/MyWebsite/models/contacts.js:15:14)
在 Object.exports.list (/Users/abc/Desktop/NodeProjects/MyWebsite/models/contacts.js:29:22)
在 /Users/abc/Desktop/NodeProjects/MyWebsite/app.js:38:44
在 Layer.handle [作为 handle_request] (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/express/lib/router/layer.js:95:5)
接下来 (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/express/lib/router/route.js:131:13)
在 Route.dispatch (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/express/lib/router/route.js:112:3).
我不知道这是什么意思,有人可以指导我吗?
下面给出我的两个脚本的代码来理解问题?
我正在尝试通过 contacts.js 脚本的 "function read_json_file()" 函数连接到 MS Sql 服务器。
App.js脚本代码:
var express = require('express');
var http = require('http');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var nodemailer = require('nodemailer');
var url = require('url');
var routes = require('./routes/index');
var contacts = require('./models/contacts');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.set('port', process.env.PORT || 3000);
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
//app.use('/contacts', contacts);
// catch 404 and forward to error handler
app.get('/contacts',function(request, response){
var get_params = url.parse(request.url, true).query;
if (Object.keys(get_params).length == 0)
{
response.setHeader('content-type', 'application/json');
response.end(JSON.stringify(contacts.list()));
}
else
{
response.setHeader('content-type', 'application/json');
stringify(contacts.query_by_arg(get_params.arg, get_params.value));
}
});
app.get('/contacts/:number', function(request, response) {
response.setHeader('content-type', 'application/json');
response.end(JSON.stringify(contacts.query(request.params.number)));
});
app.get('/groups', function(request, response) {
response.setHeader('content-type', 'application/json');
response.end(JSON.stringify(contacts.list_groups()));
});
app.get('/groups/:name', function(request, response) {
response.setHeader('content-type', 'application/json');
response.end(JSON.stringify(
contacts.get_members(request.params.name)));
});
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
http.createServer(app).listen(app.get('port'), function() {
console.log('Express server listening on port ' + app.get('port'));
});
module.exports = app;
contacts.js脚本代码:
var fs = require('fs');
var mysql = require('mysql');
var connection = mysql.createConnection({
host : '192.168.***.***', //Ip address of the server machine
port : '****', //Port number
user : 'ab',
password : 'abc',
database : 'MyDataBase'
});
//Read Json file
function read_json_file() {
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
connection.end();
var file = './data/contacts.json';
return fs.readFileSync(file);
}
//Parse the the file da
exports.list = function() {
return JSON.parse(read_json_file());
};
exports.query = function(number) {
console.log('contact Number is:: '+number);
var json_result = JSON.parse(read_json_file());
var result = json_result.result || [];
for (var i = 0; i < result.length; i++) {
var contact = result[i];
if (contact.primarycontactnumber === number) {
return contact;
}
}
return null;
};
exports.query_by_arg = function(arg, value) {
var json_result = JSON.parse(read_json_file());
var result = json_result.result || [];
for (var i = 0; i < result.length; i++) {
var contact = result[i];
if (contact[arg] === value) {
return contact;
}
}
return null;
};
exports.list_groups = function() {
var json_result = JSON.parse(read_json_file());
var result = json_result.result || [];
var resultArray = [];
for (var i = 0; i < result.length; i++) {
var groups = result[i].groups;
for (var index = 0; index < groups.length; index++) {
if (resultArray.indexOf(groups[index]) === -1) {
resultArray.push(groups[index]);
}
}
}
return resultArray;
};
exports.get_members = function(group_name) {
var json_result = JSON.parse(read_json_file());
var result = json_result.result || [];
var resultArray = [];
for (var i = 0; i < result.length; i++) {
if (result[i].groups.indexOf(group_name) > -1) {
resultArray.push(result[i]);
}
}
return resultArray;
};
使用贻贝模块https://github.com/patriksimek/node-mssql。跟随样本。
我使用 node.js 开发了 REST api。我的 api 在我的 macbook 上是 运行。我正在尝试使用 node-mysql 模块在另一台机器上访问 MS SQL 服务器 运行,但是在尝试创建连接时出现以下错误:
获取/联系人/200 12.467 毫秒 - - events.js:141 扔呃; // 未处理的 'error' 事件 ^
错误:调用退出后无法将握手排队。 在 Protocol._validateEnqueue (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/mysql/lib/protocol/Protocol.js:202:16) 在 Protocol._enqueue (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/mysql/lib/protocol/Protocol.js:135:13) 在 Protocol.handshake (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/mysql/lib/protocol/Protocol.js:52:41) 在 Connection.connect (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/mysql/lib/Connection.js:123:18) 在 read_json_file (/Users/abc/Desktop/NodeProjects/MyWebsite/models/contacts.js:15:14) 在 Object.exports.list (/Users/abc/Desktop/NodeProjects/MyWebsite/models/contacts.js:29:22) 在 /Users/abc/Desktop/NodeProjects/MyWebsite/app.js:38:44 在 Layer.handle [作为 handle_request] (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/express/lib/router/layer.js:95:5) 接下来 (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/express/lib/router/route.js:131:13) 在 Route.dispatch (/Users/abc/Desktop/NodeProjects/MyWebsite/node_modules/express/lib/router/route.js:112:3).
我不知道这是什么意思,有人可以指导我吗?
下面给出我的两个脚本的代码来理解问题? 我正在尝试通过 contacts.js 脚本的 "function read_json_file()" 函数连接到 MS Sql 服务器。
App.js脚本代码:
var express = require('express');
var http = require('http');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var nodemailer = require('nodemailer');
var url = require('url');
var routes = require('./routes/index');
var contacts = require('./models/contacts');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.set('port', process.env.PORT || 3000);
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
//app.use('/contacts', contacts);
// catch 404 and forward to error handler
app.get('/contacts',function(request, response){
var get_params = url.parse(request.url, true).query;
if (Object.keys(get_params).length == 0)
{
response.setHeader('content-type', 'application/json');
response.end(JSON.stringify(contacts.list()));
}
else
{
response.setHeader('content-type', 'application/json');
stringify(contacts.query_by_arg(get_params.arg, get_params.value));
}
});
app.get('/contacts/:number', function(request, response) {
response.setHeader('content-type', 'application/json');
response.end(JSON.stringify(contacts.query(request.params.number)));
});
app.get('/groups', function(request, response) {
response.setHeader('content-type', 'application/json');
response.end(JSON.stringify(contacts.list_groups()));
});
app.get('/groups/:name', function(request, response) {
response.setHeader('content-type', 'application/json');
response.end(JSON.stringify(
contacts.get_members(request.params.name)));
});
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
http.createServer(app).listen(app.get('port'), function() {
console.log('Express server listening on port ' + app.get('port'));
});
module.exports = app;
contacts.js脚本代码:
var fs = require('fs');
var mysql = require('mysql');
var connection = mysql.createConnection({
host : '192.168.***.***', //Ip address of the server machine
port : '****', //Port number
user : 'ab',
password : 'abc',
database : 'MyDataBase'
});
//Read Json file
function read_json_file() {
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
connection.end();
var file = './data/contacts.json';
return fs.readFileSync(file);
}
//Parse the the file da
exports.list = function() {
return JSON.parse(read_json_file());
};
exports.query = function(number) {
console.log('contact Number is:: '+number);
var json_result = JSON.parse(read_json_file());
var result = json_result.result || [];
for (var i = 0; i < result.length; i++) {
var contact = result[i];
if (contact.primarycontactnumber === number) {
return contact;
}
}
return null;
};
exports.query_by_arg = function(arg, value) {
var json_result = JSON.parse(read_json_file());
var result = json_result.result || [];
for (var i = 0; i < result.length; i++) {
var contact = result[i];
if (contact[arg] === value) {
return contact;
}
}
return null;
};
exports.list_groups = function() {
var json_result = JSON.parse(read_json_file());
var result = json_result.result || [];
var resultArray = [];
for (var i = 0; i < result.length; i++) {
var groups = result[i].groups;
for (var index = 0; index < groups.length; index++) {
if (resultArray.indexOf(groups[index]) === -1) {
resultArray.push(groups[index]);
}
}
}
return resultArray;
};
exports.get_members = function(group_name) {
var json_result = JSON.parse(read_json_file());
var result = json_result.result || [];
var resultArray = [];
for (var i = 0; i < result.length; i++) {
if (result[i].groups.indexOf(group_name) > -1) {
resultArray.push(result[i]);
}
}
return resultArray;
};
使用贻贝模块https://github.com/patriksimek/node-mssql。跟随样本。