これは非常に簡単なように思えますが、私は約 2 時間も立ち往生しています。4 人の別々の人が調べましたが、明らかな問題は見つかりませんでした。そこで、再び SO コミュニティに目を向けます。
本当に簡単です-mysql-nodeを介してmysqlデータベースにデータを挿入しようとしています。接続エラーは発生せず、SELECT は問題なく動作します。使用されているコードは次のとおりです。
exports.postNewCast = function(data, res) {
var query = "INSERT INTO cast (name, portrait, role, bio) VALUES ('" + data.name + "', '" + data.portrait + "', '" + data.role + "', '" + data.bio + "');";
console.log(query);
dbConnection.query(query, data, function(err, result) {
if (err) {
console.log(err);
} else {
sendResponse(res, "Cast Member Added", 201);
}
});
};
ログに記録されるエラーは次のとおりです。
{ [Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cast (name, portrait, role, bio) VALUES ('Jessie', 'images/cast/marissa.jpg', 'L' at line 1]
code: 'ER_PARSE_ERROR',
errno: 1064,
sqlState: '42000',
index: 0 }
(私にとって) 奇妙な点は、ターミナル ウィンドウ (サーバーが実行されている場所) から console.logged クエリ文字列をコピーして、それを mysql コマンド ラインに貼り付けることで、問題なく動作することです。GRANT を使用して、実行中のユーザー サーバーにアクセス許可があることを確認しましたが、何もしませんでした。INSERT INTO 構文を作業ソースから直接コピーして貼り付け、データ固有のフィールドのみを置き換えようとしました。VALUES を使用してみましたか? オプション、その後にデータ オブジェクトが続き、同じ結果が得られました。
それで、私はどんな愚かな間違いを犯していますか?
ありがとう。