Код просто создает новые таблицы и добавляет данные из CSV-файла. Он выполняется нормально, пока не будет создана таблица тегов.
db.query("DROP TABLE if exists `wlb`.`users`, `wlb`.`library`,`wlb`.`tags`, `wlb`.`tag_instance`, `wlb`.`vote_library`, `wlb`.`vote_table`")
.then(()=>{return db.query(Users)}).then(()=>{return csv.parseCSV("users")})
.then(()=>{return db.query(Library)}).then(()=>{return csv.parseCSV("Library")})
.then(()=>{return db.query(Tags)}).then(()=>{return csv.parseCSV("tags")})
.then(()=>{return db.query(Tag_instance)}).then(()=>{return csv.parseCSV("Tag_instance")})
.then(()=>{return db.query(Vote_table)}).then(()=>{return csv.parseCSV("Vote_table")})
.then(()=>{return db.query(Vote_library)}).then(()=>{return csv.parseCSV("Vote_library")})
.catch((err)=>{console.log(err);
conn.db.end();});
Db.query выглядит следующим образом:
var query=function(query,callback){
return new Promise(function(resolve,reject){
conn.db.query(query,function(error,result){
if(error){
return reject(new Error("Error occurred while making query"+error))
}
else{
console.log("Query Executed");
resolve(result);
}
})
});
}
Parse Csv function is as folows:
var parseCSV = (name) => {
return new Promise(function (resolve, reject) {
filePath = __dirname + `/../../Data/${name}.csv`;
fs.readFile(filePath, {
encoding: 'utf-8'
}, function (err, csvData) {
if (err) {
return reject(err);
}
csvParser(csvData, {
delimiter: ',',
cast: true
}, function (err, data) {
if (err) {
return reject(err);
} else {
var sql="INSERT INTO `wlb`."+`${name}`+ " VALUES ?";
data.splice(0,1);
console.log(data[0]);
conn.db.query(sql, [data], function(err) {
if (err){
return reject(err);
}
else {
console.log(`${name} Inserted `);
resolve();
}
})
}});
});
});
}
Ошибка выглядит следующим образом:
Ошибка: ER_NO_REFERENCED_ROW_2: невозможно добавить или обновить дочернюю строку: внешний ключ
ограничение не выполняется (wlb
. tags
, CONSTRAINT iduser_fk2
FOREIGN KEY (idusers
)
ССЫЛКИ users
(idusers
) ПРИ УДАЛЕНИИ УСТАНАВЛИВАЕТСЯ НА НУЛЕВОЙ ОБНОВЛЕНИИ КАСКАДА).
Когда я пытаюсь явно попытаться загрузить CSV-файлы с помощью SQL Workbench, это работает, хотя. Так что это не должно быть референциальное ограничение, которое его вызывает.