gpt4 book ai didi

javascript - node.js mysql 在 HANDLER RESOLVED 附近插入 ER_PARSE ERROR

转载 作者:行者123 更新时间:2023-11-29 10:44:07 25 4
gpt4 key购买 nike

我有一个在 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中)是:

{
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'HANDLER RESOLVED _____');
// Timeout clearing if needed
' at line 2
at Query.Sequence._packetToError (...\node_modules\mysql\lib\protocol\sequences\Sequence.js:52:14)
at Query.ErrorPacket <<stack trace continues>>)
code: 'ER_PARSE_ERROR',
errno: 1064,
sqlState: '42000',
index: 0
}

接下来是第二个错误,表明回调不是函数:

Debug: internal, implementation, error
TypeError: Uncaught error: callback is not a function

类似的代码在用于选择的 API 中的其他地方工作。谢谢!

进一步说明:该表为:

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 工作台中运行它时,它可以工作。

最佳答案

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

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

以上是更正后的内容。

关于javascript - node.js mysql 在 HANDLER RESOLVED 附近插入 ER_PARSE ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44944226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com