【问题标题】:how to write a query in the error section using node js如何使用节点js在错误部分编写查询
【发布时间】:2018-05-29 09:27:11
【问题描述】:

我正在使用节点 js 批量上传到 mysql db。我正在插入多行,如果在执行过程中发生任何错误,我必须更新表中的列。我该怎么做。

var connection = createmysqlconnection(); 
var query1 = "INSERT INTO abc ("1","2");";
var query2 = "INSERT INTO xyz("3","4");";
var query3 = "INSERT INTO aaa("5","6");";
var sql = query1+query2+query3; 
connection.query(sql, function (error, results, fields) { 
    if (error) { 
        console.log("Error occured"); 
        connection.destroy(); 
        throw error; 
    } else { 
        // connected! 
        console.log(results); 
        callback(error, results); connection.end(); 
    } 
});

【问题讨论】:

  • 向我们展示您迄今为止的尝试
  • var connection = createmysqlconnection(); var query1 = "INSERT INTO abc ("1","2"); var query2 = "INSERT INTO xyz("3","4"); var query3 = "INSERT INTO aaa("5","6"); var sql = query1+query2+query3; connection.query(sql, function (error, results, fields) { if (error) { console.log( "发生错误"); connection.destroy(); throw error; } else { // 已连接!console.log(results); callback(error, results); connection.end(); } });

标签: mysql node.js


【解决方案1】:

根据您的评论,您的查询不正确,请检查所需的修改;

// make multiple statements true
var connection = mysql.createConnection({multipleStatements: true});

var query1 = "INSERT INTO abc VALUES("1","2");"; <== VALUES & `;` were missing
var query2 = "INSERT INTO xyz VALUES("3","4");";
var query3 = "INSERT INTO aaa VALUES("5","6");";
var sql = query1+query2+query3; 
connection.query(sql, function (error, results, fields) { 
    if (error) { 
        console.log("Error occured"); 
        connection.destroy(); 
        throw error; 
    } else { 
        // connected! 
        console.log(results); 
        callback(error, results); connection.end(); 
    } 
});

编辑1:如果是DUPLICATE KEY,您可以使用以下查询INSERT OR UPDATE

var query1 = "INSERT INTO abc VALUES("1","2") ON DUPLICATE KEY UPDATE val1="1", val2=2;";

【讨论】:

  • 是的。这是我输入查询时的错误。在我的真实代码中它是正确的。但是如果任何查询失败,任何人都可以告诉我如何执行 UPDATE 语句。
  • @DeepthiRajeev 如果行具有相同的主键,您是否要更新它。这意味着 DUPLICATE 密钥违规错误?
  • @DeepthiRajeev 更新了与 KEY VIOLATION 相关的答案
  • 实际上,如果由于任何原因执行失败,我想更新不同表中的状态列。我想在 if(error) 块内执行此操作。但我无法执行 UPDATE 语句在 if 条件内。
  • 请提供任何指针..基本上我的疑问是如何在错误块中执行 UPDATE 语句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
相关资源
最近更新 更多