我解析一个大的 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 对我没有帮助。
最佳答案
我认为您误解了如何使用 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');
}
});
关于mysql - Node.js-mysql : Bad field Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48429473/