使用mysql-node INSERT INTO错误

时间:2013-11-15 00:12:25

标签: mysql node-mysql

这看起来应该非常容易,而且我已经被困了大约两个小时了。有四个人看过,没有发现明显的问题。所以我再次转向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?选项,后跟数据对象,得到相同的结果。

那么我犯的是什么愚蠢的错误?

感谢。

2 个答案:

答案 0 :(得分:10)

Ilya Bursov 说得对,为后代添加了这个答案。我不确定'cast'是一个保留字还是什么,但是我需要在表名周围留下刻度(“”“)以使其正常工作。

答案 1 :(得分:2)

尝试在每个列名称周围添加“`

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