npmパッケージmysql(2.13.0)を使用して、Node.JS(6.10.3)で書かれたAWS Lambdaで動作するAPIを持っています。これは、Serverlessを使用して配備および管理されます。node.js mysql INSERT ERROR near HANDLER RESOLVED
私は、次のコードを使用して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}')
);`;
}
を追加されましたが、エラーが設定されています - 何かがどこかで間違っている(挿入の後にある可能性がある)ことを意味します。
(にconsole.logで)のMySQLによって返されたエラーがある:
{
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
}
これは、第2のエラーが続き、そのコールバックを記載する関数はない:
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);
からの結果は次のとおりです。私はMySQLのワークベンチで直接それを実行したときに動作します
INSERT INTO lds_config.test_table
(
name,
name_hash
)
VALUES
(
'test01',
MD5('test01')
);
。
ありがとうございました - コードをコピーするときに私はそれを忘れました!私はコールバックをonQueryComplete関数に渡していますが、 'function(params、...)'の部分にあります。元のクエリを修正しました。 –
問題を生成するSQLコードを追加するためにオリジナルの投稿を編集しました。 –
okのように見えますが、Sequence.js:52:14を調べることをアドバイスしても、それをデバッグすることさえできます。 – Volem