Sails.js版本0.12.13。

User.query(`CALL someProc()`, function(err, data){
    console.log(data);
}


响应:

data: OkPacket {
    fieldCount: 0,
    affectedRows: 0,
    insertId: 0,
    serverStatus: 32,
    warningCount: 0,
    message: '',
    protocol41: true,
    changedRows: 0
}


什么是“ serverStatus:32”?
什么是“ serverStatus:34”?

最佳答案

Sails中.query调用的响应直接来自驱动程序,在本例中为mysqlserverStatus是一个位域。您可以在MySQL source code docs中获取常量列表-列表中的第一个常量表示1的值,下一个2然后是4,依此类推。

所以serverStatus: 32意味着只设置了第六位,对应于SERVER_STATUS_CURSOR_EXISTS


  服务器能够满足客户端的请求,并为查询打开了一个只读的不可滚动游标。
  
  该标志是对COM_STMT_EXECUTE和COM_STMT_FETCH命令的答复。二进制协议结果集使用此信号表示必须使用COM_STMT_FETCH来获取行数据。


如果看到serverStatus: 34,则表示上面的第二个位SERVER_STATUS_AUTOCOMMIT都已设置:


  服务器处于auto_commit模式。

10-05 22:37