Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 错误:ER“无效的”JSON“文本:无效的JSON文本:”;无效值。”;在列';的值中的位置1处_数据';。在节点JS中_Mysql_Node.js - Fatal编程技术网

Mysql 错误:ER“无效的”JSON“文本:无效的JSON文本:”;无效值。”;在列';的值中的位置1处_数据';。在节点JS中

Mysql 错误:ER“无效的”JSON“文本:无效的JSON文本:”;无效值。”;在列';的值中的位置1处_数据';。在节点JS中,mysql,node.js,Mysql,Node.js,我想使用节点js的存储过程将JOSN数据/对象插入mysql。首先,我知道有一些类似的问题,但我尝试过,但仍然没有得到结果 这是我第一次使用存储过程和节点js,所以我有了表名test\u data 测试数据 CREATE TABLE `test_data` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NULL DEFAULT NULL, `address` VARCHAR(255) NULL DE

我想使用节点js的存储过程将JOSN数据/对象插入mysql。首先,我知道有一些类似的问题,但我尝试过,但仍然没有得到结果

这是我第一次使用存储过程和节点js,所以我有了表名
test\u data

测试数据

CREATE TABLE `test_data` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(255) NULL DEFAULT NULL,
    `address` VARCHAR(255) NULL DEFAULT NULL,
    `city` VARCHAR(255) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=2
;
这是存储过程
插入数据

insert_data

CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_data`(
    IN `_data` JSON

)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
    declare p_name varchar(255) default null;
    declare p_address varchar(255) default null;
    declare p_city varchar(255) default null;

    set p_name= json_unquote(json_extract(_data, '$.name'));
    set p_address= json_unquote(json_extract(_data, '$.address'));
    set p_city= json_unquote(json_extract(_data, '$.city'));        

    insert into test_data(name, address, city) values(p_name, p_address, p_city);
END
这是我的
节点js
代码:

const con = require('./db/connection');

const _data = {
    "name": "Ironman",
    "address": "ani@gamil.com",
    "city": "bhilai"
}
const sql = "CALL insert_data('"+_data +"')"
con.query(sql, _data,(error, result) => {

    if(error){
        return console.log("There is error in the query: " + error)
    }
    console.log(result)
}) 
错误

There is error in the query: Error: ER_INVALID_JSON_TEXT: Invalid JSON text: "Invalid value." at position 1 in value for column '._data'.
请帮帮我,我做错了什么


谢谢

在我看来,您实际上并没有传递JSON值

const _data = {
    "name": "Ironman",
    "address": "ani@gamil.com",
    "city": "bhilai"
};
上面是一个Javascript对象,而不是它的JSON表示。所以这里

const sql = "CALL insert_data('"+_data +"')"
sql
的实际值将是
“CALL insert_data('[object]')”
,这实际上是无效的。尝试将
sql
转储到控制台,以验证情况确实如此

尝试:

const sql = "CALL insert_data('"+ JSON.stringify(_data) +"')"

在我看来,您实际上并没有传递JSON值

const _data = {
    "name": "Ironman",
    "address": "ani@gamil.com",
    "city": "bhilai"
};
上面是一个Javascript对象,而不是它的JSON表示。所以这里

const sql = "CALL insert_data('"+_data +"')"
sql
的实际值将是
“CALL insert_data('[object]')”
,这实际上是无效的。尝试将
sql
转储到控制台,以验证情况确实如此

尝试:

const sql = "CALL insert_data('"+ JSON.stringify(_data) +"')"