我使用NodeJ将JSON数据插入MariaDB。插入数据时出现以下错误。请告知导致错误的原因。实际上列数据1没有空值或空值。为什么我得到以下错误?
{ [Error: Column 'data1' cannot be null] code: 1048 }
表格结构
CREATE TABLE `from_excel` (
`ID` INT(11) NOT NULL AUTO_INCREMENT,
`data1` VARCHAR(50) NULL DEFAULT NULL,
`data2` VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (`ID`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;
我用来插入数据的代码。
var Client = require('mariasql');
var c = new Client({
host : 'localhost',
user : 'xxxx',
password : 'xxxx',
db : 'Metrics'
});
const workbook = xlsx.readFile(__dirname + '/test.xlsx');
const worksheet = workbook.Sheets[workbook.SheetNames[0]];
var json=xlsx.utils.sheet_to_json(worksheet);
console.log(json.length);
for(var i=0;i<json.length;i++)
{
var post = {data1: json[i].data1, data2: json[i].data2};
var sql = c.query('INSERT INTO elements_from_excel (data1,data2) VALUES (?,?)', post, function(err, result) {
console.log(sql);
if(err){console.log(err);}
else {console.log("success");}
});
}
c.end();
答案 0 :(得分:1)
可能发生的是生成的insert语句如下:
INSERT into from_excel (data1, data2) VALUES (`data1` = \'data1value\', `data2` = \'value\', ?)
尝试使用以下代码替换查询字符串:
var post = {data1: json[i].data1, data2: json[i].data2};
var sql = c.query('INSERT INTO from_excel SET ?', post, function(err, result) {
console.log(sql);
if(err){console.log(err);}
else {console.log("success");}
答案 1 :(得分:0)
它应该是INSERT INTO from_excel VALUES (?)
,虽然您修复此错误时很可能会遇到其他错误。
答案 2 :(得分:0)
确保您正在呼叫的功能接收他们期望的确切数据类型。
答案 3 :(得分:-2)
以这种方式尝试:
var post = {data1: json[i].data1, data2: json[i].data2};
var sql = c.query('INSERT INTO elements_from_excel (data1,data2) VALUES (:data1, :data2)', post, function(err, result) { ... })
或
var post = [json[i].data1, json[i].data2];
var sql = c.query('INSERT INTO elements_from_excel (data1,data2) VALUES (?,?)', post, function(err, result) {