2016-12-02 77 views
3

我使用NodeJs将JSON数据插入到MariaDB中。插入数据时出现以下错误。请告知导致错误的原因。其实列数据1没有空值或空值。为什么我得到低于错误?如何使用Nodejs将json数据插入MariaDB?

{ [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

你想把JSON插入为字符串吗?或者是你想要插入值的'data1'和'data2'列? –

+0

是的,想要将json插入表格的两列。第一列名称data1和第二列名称data2。 – user2848031

回答

0

它应该是INSERT INTO from_excel VALUES (?),虽然在修复这个问题时很可能会遇到其他错误。

+0

谢谢。接得好!现在我得到了{[错误:列计数与第1行的值计数不匹配]代码:1136} – user2848031

+0

这是因为您插入了一个值,但显然在表中有多个列。那么它应该是'INSERT INTO from_excel(column_name)VALUES(?)'。或者,如果是两列,则从_excel(data1,data2)VALUES(?,?)'INSERT INTO并相应地进行绑定。 – elenst

+0

谢谢。现在只插入NULL值。所以我没有在表结构中为null,并给出一个错误data1不能为空]代码:1048.但data1列中没有空值。请指教。 – user2848031

0

确保您所调用的函数接收到他们期望的确切数据类型。

0

试试这样说:

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) { 
0

什么可以发生的是,所产生的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");} 
相关问题