mysql - 更新 SQL 查询返回误导性响应

标签 mysql node.js

我正在使用 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

最佳答案

我的猜测是您已关闭自动提交,可能是在 MySQL 服务器的 my.cnf 文件中或其他方式中。要进行检查,请按照以下方式运行代码:

let sql = "SHOW GLOBAL variables LIKE 'autocommit'";
connection.query(sql, function(err, result) {
  console.log(result, 'global');
});

let sql2 = "SHOW variables LIKE 'autocommit'";
connection.query(sql2, function(err, result) {
  console.log(result, 'local');
});

你的控制台应该输出

[ RowDataPacket { Variable_name: 'autocommit', Value: 'ON' } ] 'global'
[ RowDataPacket { Variable_name: 'autocommit', Value: 'ON' } ] 'local'

但是如果自动提交处于“关闭”状态,您就有答案了。

关于mysql - 更新 SQL 查询返回误导性响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40750139/

相关文章:

mysql - 当我们有一个唯一的索引列时,我们是否应该存储一个自增ID

javascript - 使用 Electron 伪造打包应用程序时出现问题 "Can' t 解决 './→' “

php - 向数组添加默认值

node.js - 使用从文件读取的字符串在 Typescript 中进行字符串插值

javascript - '类型错误:Points is not a function' in Node. js

node.js - 在 ubuntu 12.04 下以多种方式安装 node.js 0.10.26 失败

javascript - 一致的设备ID

Mysql 更新多表查询

mysql - Oracle ADF - Tomcat 6.x - MySql 5.5 - 导航不发生

mysql时间格式仅获取小时和分钟