【发布时间】:2018-03-25 00:36:23
【问题描述】:
我有一个表,它有一个复合主键(room_id、x_coord 和 y_coord)和另一个名为 card_id 的列。我正在尝试将几条记录插入到 mysql 数据库中。我正在使用 mysql 库以及 node.js 的 express 库。
如果记录不存在,我想插入一条由 room_id、x_coord、y_coord 和 card_id 组成的新记录。
另一方面,如果记录确实存在,我想将当前记录更新为新的card_id。
这是我当前代码的副本:
//previously defined: room_id, x, y, and cards[]
var i = 0;
var db_values = [];
for (var row = 0; row < y; row++){
for (var col = 0; col < x; col++){
card = cards[i];
//The following line may have a problem?
db_values.push([room_id, col, row, card['id'], card['id']]);
i++;
}
}
sql = "insert into user_card(room_id, x_coord, y_coord, card_id) values ? on duplicate key update card_id = values(?)";
//The following line may have a problem?
db_connection.query(sql, [db_values], function (err, result){
if (err){
console.log("Upsert DB ERROR: " + err);
return;
}
});
我尝试了各种代码组合,每种组合都会产生不同的错误。上面的一个产生以下错误:
ER_PARSE_ERROR:您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本以获得正确的语法 在第 1 行使用 '?)' 附近
我在这里做错了什么,我可以做些什么来解决这个问题?
【问题讨论】:
标签: javascript mysql node.js upsert