Node.js Проблема при вставке данных в базу данных - PullRequest
0 голосов
/ 12 января 2019

Код просто создает новые таблицы и добавляет данные из 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, это работает, хотя. Так что это не должно быть референциальное ограничение, которое его вызывает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...