Я пытаюсь записать некоторые внешние данные в некоторые локальные таблицы.Мы будем перебирать массив, записывая большую часть данных каждого элемента массива в основную таблицу, а остальные - в связанные таблицы, каждый раз заменяя все данные.
Я сократил код доголые кости, чтобы показать мою проблему.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);
});
});
};