2013-11-15 141 views
5

這似乎應該是超級簡單,我一直堅持了大約兩個小時。四個人分別看着,並沒有發現一個明顯的問題。我再次轉向SO社區。INSERT INTO錯誤與mysql-node

真正簡單 - 我只是想通過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

後面是tick。我以爲你的意思是單引號,並沒有奏效。但是後面的勾號做到了。 – DrHall

回答

7

伊利亞Bursov有它正確的,加入這個答案留給後人。我不確定'cast'是一個保留字還是什麼,但是我需要在表名後面加上「(」`「)來讓它工作。

1

嘗試把``圍繞每個列名這樣

"INSERT INTO cast (`name`, `portrait`, `role`, `bio`) VALUES ('" + data.name + "', '" + data.portrait + "', '" + data.role + "', '" + data.bio + "');";