mysql协议学习(三)--OK报文
来源:互联网 发布:php微信订餐系统源码 编辑:程序博客网 时间:2024/05/16 06:46
Payload of OK Packet
header
[00]
or [fe]
the OK packet headerint<lenenc>affected_rows
affected rowsint<lenenc>last_insert_id
last insert-idif capabilities & CLIENT_PROTOCOL_41 { int<2>status_flags
Status Flags int<2>warnings
number of warnings} elseif capabilities & CLIENT_TRANSACTIONS { int<2>status_flags
Status Flags}if capabilities & CLIENT_SESSION_TRACK { string<lenenc>info
human readable status information if status_flags & SERVER_SESSION_STATE_CHANGED { string<lenenc>session_state_changes
session state info }} else { string<EOF>info
human readable status information}对于执行成功的命令,通常会返回OK报文
OK报文和EOF报文的区别
对于OK报文和EOF报文,其header字段都可能为0xfe,那么有如下规则来区分这两种报文
OK Packet:length of packet > 7
EOF Packet:length of packet < 9
eg:
OK with CLIENT_PROTOCOL_41. 0 affected rows, last-insert-id was 0, AUTOCOMMIT enabled, 0 warnings. No further info.
07 00 00 0200000002 0000 00
...........
Status Flags说明:
SERVER_STATUS_IN_TRANS
0x0001a transaction is activeSERVER_STATUS_AUTOCOMMIT
0x0002auto-commit is enabledSERVER_MORE_RESULTS_EXISTS
0x0008SERVER_STATUS_NO_GOOD_INDEX_USED
0x0010SERVER_STATUS_NO_INDEX_USED
0x0020SERVER_STATUS_CURSOR_EXISTS
0x0040Used by Binary Protocol Resultset
to signal thatCOM_STMT_FETCH
must be used to fetch the row-data.SERVER_STATUS_LAST_ROW_SENT
0x0080SERVER_STATUS_DB_DROPPED
0x0100SERVER_STATUS_NO_BACKSLASH_ESCAPES
0x0200SERVER_STATUS_METADATA_CHANGED
0x0400SERVER_QUERY_WAS_SLOW
0x0800SERVER_PS_OUT_PARAMS
0x1000SERVER_STATUS_IN_TRANS_READONLY
0x2000in a read-only transactionSERVER_SESSION_STATE_CHANGED
0x4000connection state information has changedSession State Information
该部分信息由以下部分组成:
type
type of datastring<lenenc>data
data of the changed session info其中type有3种,分别是:
types of State Change Information
SESSION_TRACK_SYSTEM_VARIABLES
0x00
one or more system variables changed. See also:session_track_system_variables
SESSION_TRACK_SCHEMA
0x01
schema changed. See also: session_track_schema
SESSION_TRACK_STATE_CHANGE
0x02
"track state change" changed. See also:session_track_state_change
不同type类型对应的data组成是不同的
name
name of the changed system variablestring<lenenc>value
value of the changed system variableeg:
SET autocommit = OFF
00 0f 0a 61 75 74 6f 63 6f 6d 6d 69 7403 4f 4646
....autocommit.OFF第1个字节00表示type=SESSION_TRACK_SYSTEM_VARIABLES,接下来的部分组成为data字段,类型是string<lenenc>,其中第1个字节0f表示接下来的字符串长度为15个字节(0x0f = 15),而SESSION_TRACK_SYSTEM_VARIABLES的data字段又分为两个字段 name(string<lenenc>)和 value(string<lenenc>),那么接下来的 0a 61 75 74 6f 63 6f 6d 6d 69 74 (len = 0x0a) 和 03 4f 46 46 (len = 0x03)则分别为name字段和value字段的内容。
SESSION_TRACK_SCHEMA 对应的data字段内容
name
name of the changed schemaeg:
USE test
01 05 04 74 65 73 74
...test第1个字节01表示type=SESSION_TRACK_SCHEMA,接下来的部分组成为data字段,类型是string<lenenc>,其中第1个字节05表示接下来的字符串长度为5个字节,data字段内容为 04 74 65 73 74(len = 0x04)
SESSION_TRACK_STATE_CHANGE 对应的data字段内容
备注:A flag byte that indicates whether session state changes occurred. This flag is represented as an ASCII value
is_tracked
[31]
("1") if state tracking got enabled. 0 0
- mysql协议学习(三)--OK报文
- mysql协议学习(二)--报文格式
- mysql协议学习(四)--ERR报文
- mysql协议学习(五)--EOF报文
- mysql 协议的OK包及解析
- Mina学习(三):实现简单自定义协议包(报文)
- Java TCP/IP协议学习笔记:分组报文和协议
- socket编程(三)---- UDP协议与传输数据报文
- Linux协议栈代码阅读笔记(三)报文接收
- TCP/IP协议学习备忘之ICMP报文重定向
- ICMP:Internet控制报文协议实现学习笔记
- 协议学习三
- HTTP协议报文格式
- SDP协议相关报文
- HTTP协议报文格式
- HTTP协议报文格式
- ICMP控制报文协议
- DNS协议 报文格式
- 使用Grunt增加 live reload
- Android shape drawable
- Boot Camp根据mac机型选择
- java中的并发:线程的基本使用
- 欢迎使用CSDN-markdown编辑器
- mysql协议学习(三)--OK报文
- 1181 变形课【dfs】
- ubuntu10.04 eclipse C/C++平台搭建
- 最近犯的错误
- hdu 5360 Hiking(优先队列+贪心)
- poj 1007 DNA Sorting(简单题)
- java生成简单流水号
- Android常用组件(View学习之一)
- mysql协议学习(四)--ERR报文