如何在 NodeJS 上将 JSON 数据写入 MySql 数据库?
How to write the JSON data to MySql Database on NodeJS?
我有 JSON 数据,是从我的 Firebird 数据库中获得的。现在,我想创建 mysql 连接并将 JSON 数据写入 NodeJS 上的 MySql 数据库。但是当我关闭 Firebird 连接并创建 MySql 连接并尝试对其进行一些查询时,它给出了一个错误:
events.js:85
throw er; // Unhandled 'error' event
^
Error: Cannot enqueue Handshake after invoking quit.
at Protocol._validateEnqueue (/Users/myuser/node_modules/mysql/lib/protocol/Protocol.js:196:16)
at Protocol._enqueue (/Users/myuser/node_modules/mysql/lib/protocol/Protocol.js:129:13)
at Protocol.handshake (/Users/myuser/node_modules/mysql/lib/protocol/Protocol.js:52:41)
at Connection.connect (/Users/myuser/node_modules/mysql/lib/Connection.js:123:18)
at Server. (/Users/myuser/Documents/project/convert_fdb_to_mysql.js:34:14)
at Server.emit (events.js:110:17)
at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:491:12)
at HTTPParser.parserOnHeadersComplete (_http_common.js:111:23)
at Socket.socketOnData (_http_server.js:343:22)
at Socket.emit (events.js:107:17)
我想修复这个错误并将我的 JSON 写入 MySql 数据库。
你能告诉我如何解决我的问题吗?
关于将 JSON 数据传输到 MySql 数据库有什么建议吗?
谢谢,
这是我从 Firebird 数据库获取数据的代码:
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/');
这个方法有效!
对于JSON到MySql:
Write queries with "JSON.stringify(r.FIELD_NAME)"
我有 JSON 数据,是从我的 Firebird 数据库中获得的。现在,我想创建 mysql 连接并将 JSON 数据写入 NodeJS 上的 MySql 数据库。但是当我关闭 Firebird 连接并创建 MySql 连接并尝试对其进行一些查询时,它给出了一个错误:
events.js:85 throw er; // Unhandled 'error' event ^ Error: Cannot enqueue Handshake after invoking quit. at Protocol._validateEnqueue (/Users/myuser/node_modules/mysql/lib/protocol/Protocol.js:196:16) at Protocol._enqueue (/Users/myuser/node_modules/mysql/lib/protocol/Protocol.js:129:13) at Protocol.handshake (/Users/myuser/node_modules/mysql/lib/protocol/Protocol.js:52:41) at Connection.connect (/Users/myuser/node_modules/mysql/lib/Connection.js:123:18) at Server. (/Users/myuser/Documents/project/convert_fdb_to_mysql.js:34:14) at Server.emit (events.js:110:17) at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:491:12) at HTTPParser.parserOnHeadersComplete (_http_common.js:111:23) at Socket.socketOnData (_http_server.js:343:22) at Socket.emit (events.js:107:17)
我想修复这个错误并将我的 JSON 写入 MySql 数据库。 你能告诉我如何解决我的问题吗?
关于将 JSON 数据传输到 MySql 数据库有什么建议吗?
谢谢,
这是我从 Firebird 数据库获取数据的代码:
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/');
这个方法有效!
对于JSON到MySql:
Write queries with "JSON.stringify(r.FIELD_NAME)"