2016-12-02 78 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");} 
相關問題