【发布时间】:2019-06-23 01:36:12
【问题描述】:
我正在尝试将一些外部数据写入一些本地表中。我们将遍历一个数组,将每个数组元素中的大部分数据写入主表,将其余数据写入相关表,每次都替换所有数据。
我已将代码精简到最基本的部分,以显示我遇到的问题。 DELETE 运行良好,但 INSERT 只运行一次,甚至不返回。
我在https://imgur.com/a/zA6Hz8g 有输出的屏幕截图。 在其中,您可以看到 DELETE 的代码运行良好(发送了 ComQueryPacket,返回了 OkPacket),但是当它到达 INSERT 时,发送了 ComQueryPacket 但没有返回任何内容。然后代码就失败了。
这会导致第一行写入成功,但不会写入后续行。
我尝试将连接更改为使用池,但这也无济于事。
有什么想法吗?
var mysql = require('mysql');
var promise = require('promise');
const con = mysql.createConnection({
<connectionInfo>,
debug: true
});
function connectToDB() {
return new promise((resolve, reject) => {
console.log("IN connectToDB");
con.connect(function(err) {
if (err) {
console.log("ERROR: Could not connect -- " + err);
reject;
}
console.log("Connected!");
resolve();
});
});
}
function deleteExistingMainRow() {
return new promise((resolve, reject) => {
var query = "DELETE FROM my_table";
con.query(query, [],
function(err, result) {
if (err) {
console.log("ERROR in deleteExistingMainRow: " + err);
reject;
}
else {
console.log("DEBUG: Successful delete of main row");
resolve();
}
});
});
}
function writeMainRow(data_row) {
return new promise((resolve, reject) => {
console.log("IN writeMainRow");
var query = 'INSERT INTO my_table SET id = ?';
con.query(query, [data_row.id],
function(err, result) {
console.log("YES we tried to query");
if (err) {
console.log("ERROR in writeMainRow: " + err);
reject(err);
}
else {
console.log("DEBUG: Successful write of main row");
resolve();
}
});
});
}
exports.handler = function(event, context) {
connectToDB().then(function(script) {
deleteExistingMainRow().then(function(script) {
var data = [{ "id": 1 }, { "id": 2 }, { "id": 3 }];
data.forEach(data_row => {
writeMainRow(data_row).then(function(script) {
console.log("DEBUG: Main row written in forEach");
},
function(err) {
if (err) { console.log("ERR"); } process.exit(0);
}());
});
console.log("DEBUG: Hey we're exiting now");
con.commit;
con.end(function(err) {
console.log("Error on con end: " + err);
});
context.done(null, "DONE");
process.exit(0);
});
});
};
【问题讨论】:
标签: mysql node.js amazon-web-services lambda