将数据插入数据库时​​的Node.js问题

时间:2019-01-12 12:44:06

标签: javascript mysql sql node.js database

代码只是创建新表并从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:无法添加或更新子行:外键 约束失败(wlbtags,约束iduser_fk2外键(idusers) 参考usersidusers)在更新级联时删除设置为空。

当我尝试显式尝试使用sql workbench加载csv文件时,它仍然可以工作,因此它一定不是导致它的引用约束。

0 个答案:

没有答案