【问题标题】:Node.js - mysql: Bad field ErrorNode.js - mysql:错误字段错误
【发布时间】:2018-07-03 21:52:00
【问题描述】:

我解析一个大的 csv 并将每行插入到我的 mysql 表中。

解析后我做了很多计算和转换并将其保存到一个新的对象中

  obj.push({                                                         
   "ID": value.id,
   "col1": value.calc1,
   ... });

对象完成后我会这样做:

async.forEach(obj, function (Insertobj, callback) {

 var query = conn.query('INSERT INTO table SET ?', Insertobj);

  },function (err){ 
      if (err) {                                                     
        console.log(err);                                             
        console.log('failed to process');
 }}

通过 obj 我得到 =>

Error: ER_BAD_FIELD_ERROR: Unknown column 'NaN' in 'field list'..

但是他将完整的对象插入到我的表中!我没有任何名为 NaN 的列或空列。我该如何调试它?我尝试将 console.log 设置为 err.sql,但他打印“未定义”。在连接中使用 debug:true 对我没有帮助。

【问题讨论】:

    标签: mysql node.js async.js


    【解决方案1】:

    我认为您误解了如何使用 node js 模块转义 mysql 值。该错误是由于您没有指定要更新的列。除此之外,应该使用数组而不是对象来填充转义值。随着值的顺序,它们在查询中被转义。您的代码可能如下所示:

        valuesarray.push([                                                         
           value.id,
           value.calc1
        ]);
    
        async.forEach(valuesarray, function ( insertarray, callback ) {
    
            var query = conn.query('INSERT INTO table SET ID = ?, col1 = 
            ?', insertarray);
    
        },function (err){ 
            if (err) {                                                     
                console.log(err);                                             
                console.log('failed to process');
            }
        });
    

    【讨论】:

      猜你喜欢
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 2011-12-03
      • 2015-02-03
      • 2018-09-13
      • 2020-12-18
      • 2015-07-27
      相关资源
      最近更新 更多