首页 > 解决方案 > NodeJS中promise链中多个SQL查询的问题

问题描述

我有以下代码每天运行一次,首先从表中删除所有记录,然后插入一组新记录,使用LOAD DATA LOCAL INFILE.

promisemysql.createConnection(currentDB)
            .then(function(conn) {
                var result = conn.query(returnQueries.returnQueries('deleteSuppliers'));
                conn.end();

                return;
            })
            .then(function() {
                promisemysql.createConnection(currentDB)
                    .then(function(conn) {
                        var result = conn.query(returnQueries.returnQueries('loadSuppliers'));
                        conn.end();
                        console.log("Suppliers database updated.");

                        return;
                    });
            });

查询是LOAD DATA LOCAL INFILE '/SuppliersCSV.csv' INTO TABLE Suppliers FIELDS TERMINATED BY ';' ENCLOSED BY '' LINES TERMINATED BY '\n' IGNORE 1 LINES (supplierCode, supplier) SET id = NULL;

问题是代码在具有 Ubuntu 18.04、NodeJS 12 和 MySQL 5.7.29 的测试 VM 上运行良好,而在另一个具有相同配置的 VM 上具有完全不同的行为。

在第一次运行时,它会从表中删除所有数据,但无法插入任何内容。在第二次运行时,它会插入所有数据。第三个将删除数据而不插入,依此类推...

奇怪的是,我使用了完全相同的代码,但使用了不同的查询(一个巨大的 INSERT 而不是 LOAD DATA LOCAL FILE),并且它在两个 VM 上都有效。

我一直试图弄清楚它已经有一段时间了,到目前为止没有任何运气,而且我的想法已经不多了。

有什么想法吗?

标签: mysqlnode.jspromiseload-data-infile

解决方案


推荐阅读