Проблема с несколькими SQL запросами в цепочке обещаний в NodeJS - PullRequest
0 голосов
/ 20 марта 2020

У меня есть следующий код, который запускается один раз в день и сначала удаляет все записи из таблицы, а затем вставляет новый набор записей, используя 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, тогда как на другой виртуальной машине с такой же конфигурацией поведение абсолютно другое.

При первом запуске удаляются все данные из таблицы, но ничего не вставляется. При втором запуске он вставляет все данные. На третьем удаляю данные без вставки и так далее ...

Странная часть в том, что я использовал точно такой же код, но с другим запросом (огромная INSERT вместо LOAD DATA LOCAL FILE) и это работало на обеих виртуальных машинах.

Я пытался разобраться в этом уже довольно давно, пока безуспешно, и у меня заканчиваются идеи.

Есть мысли?

...