【问题标题】:What means mysql "serverStatus: 34" in response of waterline orm in sails.js?什么是mysql“serverStatus:34”响应sails.js中的水线orm?
【发布时间】:2017-11-19 13:18:48
【问题描述】:

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”是什么意思?

【问题讨论】:

    标签: mysql sails.js waterline


    【解决方案1】:

    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 模式。

    【讨论】:

    • @OsaguiAghedo 状态标志文档页面上显示的值是十六进制值。 serverStatus: 34 表示十六进制的0x22,表示SERVER_STATUS_AUTOCOMMIT (0x02) 和SERVER_STATUS_NO_INDEX_USED (0x20)(在MySQL 14.1.3.4 中)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 2017-05-10
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    相关资源
    最近更新 更多