【发布时间】:2015-12-13 18:48:27
【问题描述】:
我有 JSON 数据,这些数据来自我的 Firebird 数据库。现在,我想创建 mysql 连接并将 JSON 数据写入 NodeJS 上的 MySql 数据库。但是当我关闭 Firebird 连接并创建 MySql 连接并尝试对其进行一些查询时,它会给出一个错误:
events.js:85 投掷者; // 未处理的“错误”事件 ^ 错误:调用退出后无法排队握手。 在 Protocol._validateEnqueue (/Users/myuser/node_modules/mysql/lib/protocol/Protocol.js:196:16) 在 Protocol._enqueue (/Users/myuser/node_modules/mysql/lib/protocol/Protocol.js:129:13) 在 Protocol.handshake (/Users/myuser/node_modules/mysql/lib/protocol/Protocol.js:52:41) 在 Connection.connect (/Users/myuser/node_modules/mysql/lib/Connection.js:123:18) 在服务器。 (/Users/myuser/Documents/project/convert_fdb_to_mysql.js:34:14) 在 Server.emit (events.js:110:17) 在 HTTPParser.parserOnIncoming [作为 onIncoming] (_http_server.js:491:12) 在 HTTPParser.parserOnHeadersComplete (_http_common.js:111:23) 在 Socket.socketOnData (_http_server.js:343:22) 在 Socket.emit (events.js:107:17)
我想修复这个错误并将我的 JSON 写入 MySql 数据库。 你能告诉我如何解决我的问题吗?
对于将 JSON 数据传输到 MySql 数据库有什么建议吗?
谢谢,
这是我从 Firebird db 获取数据的代码:
var fb = require('firebird');
var util = require('util');
var http = require('http');
// mySQL connection
var mysql = require('mysql');
var connection = mysql.createConnection({
socketPath: '/tmp/mysql.sock',
host: 'localhost',
user: 'root',
password: '',
database: 'mysql_db'
});
http.createServer(function (req, res) {
res.writeHead(200, {
'Content-Type': 'text/plain'
});
// Firebird connection
var con = fb.createConnection();
con.connectSync('FIREBIRD.FDB', 'SYSDBA', 'masterkey', '');
var rs = con.querySync('SOME SQL Query');
var rows = rs.fetchSync("all", true);
con.disconnect(); // Firebird disconnect
connection.connect(); // mysql connect
connection.query('SOME SQL Query', function (err, rows, fields) {
if (err) throw err;
console.log(rows[0]);
});
connection.end(); // mysql disconnect
res.write('[');
rows.forEach(function (r) {
res.write(JSON.stringify(r) + ',');
});
res.end(']');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
【问题讨论】:
-
在 http 请求处理程序中很酷的同步操作。固体。
-
这部分错误消息:
Unhandled 'error' event表明缺少错误处理程序。添加所述错误处理程序将为您提供可以采取行动的错误消息 -
错误的第二部分表明你正在结束一些尚未完成的事情,比如那个 mysql 查询。
标签: mysql json database node.js firebird2.5