2013-11-15 8 views
5

これは非常に簡単であるはずですが、今は約2時間詰まっています。 4人の別々の人が見ており、明らかな問題は見つけられていません。だからもう一度私はSOのコミュニティに向ける。mysql-nodeでINSERT INTOエラーが発生しました

リアルシンプル - 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を使ってみましたか?オプションの後にデータオブジェクトが続き、同じ結果が得られます。

私はどんな愚かな間違いをしていますか?

ありがとうございました。

+5

'' \ 'キャスト\"のようにテーブル名の前後に追加 –

+1

バックチックはそれでした。私はあなたが単一引用符を意味していると思っていましたが、それは動作しませんでした。しかし、後ろのティックはそれをしました。 – DrHall

答えて

7

イリヤBursovのように、各列名の周り ``置くようにしてください。私は 'キャスト'が予約語なのかどうか分かりませんが、テーブル名の前後にダニ( "")を入れて作業する必要がありました。

1

は、それが正しいいた後世のためにこの答えを追加するこの

"INSERT INTO cast (`name`, `portrait`, `role`, `bio`) VALUES ('" + data.name + "', '" + data.portrait + "', '" + data.role + "', '" + data.bio + "');"; 
関連する問題