Javascript 已解决处理程序附近的node.js mysql insert ER_解析错误

Javascript 已解决处理程序附近的node.js mysql insert ER_解析错误,javascript,mysql,node.js,serverless-framework,Javascript,Mysql,Node.js,Serverless Framework,我在Node.JS(6.10.3)上编写了一个运行在AWS Lambda中的API,使用npm包mysql(2.13.0)。这是使用无服务器部署和管理的 我使用以下代码将一行插入MariaDB RDS实例的表中: var mysql = require('mysql'); var connection = mysql.createConnection({ "host": process.env.CONFIG_HOST, "user": process.env.CONFIG_WRITE_

我在Node.JS(6.10.3)上编写了一个运行在AWS Lambda中的API,使用npm包mysql(2.13.0)。这是使用无服务器部署和管理的

我使用以下代码将一行插入MariaDB RDS实例的表中:

var mysql = require('mysql');

var connection = mysql.createConnection({
  "host": process.env.CONFIG_HOST,
  "user": process.env.CONFIG_WRITE_USER,
  "password": process.env.CONFIG_WRITE_PW,
  "database": process.env.CONFIG_DB,
  "connectionLimit": 1
});

module.exports.post = (event, context, callback) => {
  var body = JSON.parse(event.body);
  var params = event.someParameter;
  var sql = getSql(body.name);

  console.log(sql);
  connection.query(sql, onQueryComplete(params, callback));
}

const onQueryComplete = function(params, callback) {
  return function(error, result) {
    if (error) {
      console.log(error);
      callback(null, 'some error response');
    }

    // do something else...
  }
}

function getSql(name) {
  return `
    INSERT INTO lds_config.test_table
    (
      name,
      name_hash
    )
    VALUES
    (
      '${name}',
      MD5('${name}')
    );`;
}
如果我检查该表,我可以看到插入已成功完成,并添加了新行,但设置了错误-这意味着某个地方出了问题(可能在插入之后)

mysql(在console.log中)返回的错误是:

类似的代码在API中的其他地方也适用于selects。谢谢

进一步说明: 表格如下:

CREATE TABLE lds_config.test_table(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(500), name_hash CHAR(32));
来自
console.log的结果(sql)是:

INSERT INTO lds_config.test_table
(
  name,
  name_hash
)
VALUES
(
  'test01',
  MD5('test01')
);

当我直接在mysql workbench中运行它时,它可以工作。

也包括查询,因为第一个错误是关于mysql语法的。关于回调不是一个函数,据我所知,在下面的代码中它不是作为参数传递的

const onQueryComplete = function(params) {
  return function(error, result, callback) {
    if (error) {
     console.log(error);
     callback(null, 'some error response');
    }
    // do something else...
  }
}

以上是正确的

谢谢-我在复制代码时忽略了这一点!我确实将回调传递给onQueryComplete函数,但是它在“=函数(参数,…)”部分。我已经修改了我的原始查询。我现在编辑了我的原始帖子,添加了生成问题的sql代码。看起来还可以,但我建议您查看序列。js:52:14,您甚至可以调试它。发现了问题-它与我在稍后阶段没有传递回调有关,这导致SLS脱机包在mysql连接中记录错误时出现问题。现在解决了:)谢谢
INSERT INTO lds_config.test_table
(
  name,
  name_hash
)
VALUES
(
  'test01',
  MD5('test01')
);
const onQueryComplete = function(params) {
  return function(error, result, callback) {
    if (error) {
     console.log(error);
     callback(null, 'some error response');
    }
    // do something else...
  }
}