2013-11-15 138 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 + "');";