3

NodeJs を使用して JSON データを MariaDB に挿入しています。データの挿入中に以下のエラーが発生しました。エラーが発生する原因を教えてください。実際には、列 data1 には空または null の値はありません。エラーを下回るのはなぜですか?

{ [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();
4

4 に答える 4

1

何が起こっている可能性があるかというと、実行された結果の挿入ステートメントが次のようになることです。

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");}
于 2016-12-12T16:24:13.750 に答える
0

である必要がありますがINSERT INTO from_excel VALUES (?)、これを修正すると他のエラーが発生する可能性は十分にあります。

于 2016-12-02T16:23:01.707 に答える
0

呼び出している関数が、期待される正確なタイプのデータを受け取ることを確認してください。

于 2016-12-05T17:44:37.003 に答える
-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) {
于 2016-12-12T16:11:45.050 に答える