使用mysql节点插入错误

使用mysql节点插入错误,mysql,node-mysql,Mysql,Node Mysql,这看起来应该非常容易,我已经被困了大约两个小时了。四个独立的人进行了研究,没有发现明显的问题。因此,我再次转向So社区 非常简单-我只是尝试通过mysql节点在mysql数据库中插入数据。我没有收到任何连接错误,选择工作正常。使用的代码是: exports.postNewCast = function(data, res) { var query = "INSERT INTO cast (name, portrait, role, bio) VALUES ('" + data.name +

这看起来应该非常容易,我已经被困了大约两个小时了。四个独立的人进行了研究,没有发现明显的问题。因此,我再次转向So社区

非常简单-我只是尝试通过mysql节点在mysql数据库中插入数据。我没有收到任何连接错误,选择工作正常。使用的代码是:

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复制/粘贴到语法中,只替换数据特定的字段。我试过使用这些值吗?选项,后跟一个数据对象,并得到相同的结果

那我犯了什么愚蠢的错误


谢谢。

试着像这样在每个列名周围加上“`”

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

伊利亚·布尔索夫(Ilya Bursov)的回答是正确的,为子孙后代补充了这个答案。我不确定“cast”是保留字还是什么,但我需要在表名周围加上反勾(“`”),以使其正常工作。

在表名周围加上“cast”,比如
`cast`
反勾就是它。我以为你指的是单引号,但它不起作用。但背后的虱子做到了。