【发布时间】:2016-11-22 19:31:18
【问题描述】:
我正在使用 nodejs 对数据库进行简单的 UPDATE SQL 查询,如下所示:
conn.query("UPDATE room SET `join_id`=? WHERE `id`=?", [join, cfid], function (e, r) {
console.log(e, r);
//e null; r object;
});
来自查询的响应 r 返回以下内容:
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 0,
serverStatus: 34,
warningCount: 0,
message: '(Rows matched: 1 Changed: 1 Warnings: 0',
protocol41: true,
changedRows: 1
}
在OKPacket 响应之后,我发现数据库没有任何变化,因此我的其余代码出现故障。我花了几个小时研究这个问题,发现两年前的一个问题还没有结束:here
【问题讨论】:
-
您是否开启了交易?
-
什么是交易?
-
如果您对数据库进行的多项更改必须全部成功或全部失败,则首先启动事务。如果在某个时候出现故障,事务将“回滚”以避免不一致。如果一切成功,您的事务将“提交”以保存更改。见START TRANSACTION, COMMIT, and ROLLBACK Syntax