6

これは非常に簡単なように思えますが、私は約 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 を使用してみましたか? オプション、その後にデータ オブジェクトが続き、同じ結果が得られました。

それで、私はどんな愚かな間違いを犯していますか?

ありがとう。

4

2 に答える 2

3

このように各列名の周りに `` を入れてみてください

"INSERT INTO cast (`name`, `portrait`, `role`, `bio`) VALUES ('" + data.name + "', '" + data.portrait + "', '" + data.role + "', '" + data.bio + "');";
于 2013-11-15T00:19:02.727 に答える