我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mysql 报文格式

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码


	Mysql 报文格式


	Mysql 报文格式
[数据库教程]

mysql client和server端之间的的数据根据不同的协议规则的进行组织发送。每包数据在发送的时候都要添加上协议头。

mysql源码采用5.7.10版本:

协议头:
           每个协议头共4个字节

          包数据长度:

              前三个字节表示数据部分的长度(不包括协议头),三字节能表示的最大长度是16M-1(2^24 - 1),如果要发送的数据部分大于这个长度,要进行拆包,每16M-1个长度为一包。接收端在接受数据的时候,如果检测到包的长度是16M-1,说明后续还有数据部分,直到接收到<16M-1长度的数据包结束。这意味着最后一包的数据长度可能为0.

         序号:

                1个字节,从0开始递增。当发送一个新的sql、数据库重连,该值清0(函数sql/Net_serv.cc : net_clear).

数据类型:
         除了固定长度的整型或者字符串之外,还有其他几种类型的数据。(固定长度字段数据的存取:include/Mybyte_order.h : 存值 int*store   取值:int*korr    多字节的处理按照小端优先的方式)

         1. 可变长度的整数   

            对该类数据的存取在函数:sql-common/Pack.c: 存整数: net_store_length     读整数:net_field_length

            如果数值<251,直接用一个字节存储这个值。

           如果251<=数值<2^16, 采用3个字节存储,第一个字节是252, 另外2个字节存储整数内容

           如果2^16<=数值<2^24,采用4字节存储,第一个字节是252,另外3个字节存储整数内容

           如果2^24<=数值<2^64,采用9字节存储,第一个字节255,另外8字节存储整数内容

           如果第一个字节为251,表示该整数字段为null

           如果第一个字节为255,表示该字节是ERR包的第一个字节

       2. 可编码长度的字符串

               字符串的长度采用可变长度的整数进行编码。

数据长度不固定,长度值由数据前的1-9个字节决定,其中长度值所占的字节数不定,字节数由第1个字节决定,如下表:

第一个字节值后续字节数长度值说明
0-250 0 第一个字节值即为数据的真实长度
251 0 空数据,数据的真实长度为零
252 2 后续额外2个字节标识了数据的真实长度
253 3 后续额外3个字节标识了数据的真实长度
254 8 后续额外8个字节标识了数据的真实长度

       3. null结尾的字符串

服务器响应包:
          服务器响应包分为4类: OK包  ERR包    EOF包    数据包

          OK包:在5.7.5之前,ok包首字节为0,;在5.7.5之后,ok包的首字节可能为0xFE,表示EOF。

                              该包包括成功执行后影响的行数,最新的自增id, 告警信息(4.1版本之上),服务器状态信息:status_flag(该字段要留意,后续后讲到)

                           执行函数:sql/protocol_classic.cc :   net_send_ok

                   由于协议的内容容易变更,建议查看官网的最新版格式:https://dev.mysql.com/doc/internals/en/packet-OK_Packet.html

          ERR包:首字节是255,报错错误码和错误的描述信息。4.1版本之上包括错误状态。

                          执行函数:sql/protocol_classic.cc :   net_send_error_packet

                          具体包格式:https://dev.mysql.com/doc/internals/en/packet-ERR_Packet.html

          EOF包:首字节254,包括服务器状态和告警数量(4.1版本之上)

                          执行函数:sql/protocol_classic.cc :   net_send_eof

                          具体包格式:https://dev.mysql.com/doc/internals/en/packet-EOF_Packet.html

          数据包:和具体的协议类型有关,后续讲解

 

Mysql 报文格式

原文地址:https://www.cnblogs.com/songhaibin/p/13725598.html

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mysql 报文格式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mysql 报文格式

mysql client和server端之间的的数据根据不同的协议规则的进行组织发送。每包数据在发送的时候都要添加上协议头。mysql源码采用5.7.10版本:协议头:           每个协议头共4个字节          包数据长度:         

	Mysql 报文格式
2016-03-30

mkv文件格式

mkv文件格式是Matroska视频文件的扩展名,mkv文件格式作为一种开放的多媒体容器格式,具有容器功能强大、高级编码支持、字幕和元数据支持等特点,它在数字媒体领域中得到了广泛的应用,成为了存储和传输高质量视频和音频的理想选择。MKV是M
2023-08-09

LearnPython - Zip格式文

1 import zipfile 2 import os 3 4 5 def unzip(zip_name, target_dir): 6 files = zipfile.ZipFile(zip_name) 7 for
2023-01-30

mysql日期格式化

1 select DATE_FORMAT(dtl.transdate,"%Y-%m-%d") as transdate,2 right(DATE_FORMAT(concat(transdate,transtime),"%Y-%m-%d %H:%
mysql日期格式化
2019-01-18

MySQL 日期格式化

本文旨在以最快的速度,提供你需要的 MySQL 日期格式化方案。 1. 将时间格式化为 YYYY-mm-dd HH:ii:ss 格式 我想你要搜的就是这个!!!哈哈哈 SELECT DATE_FORMAT(NOW(),'%Y-%m-%
2023-08-30

MySQL 格式化时间

MySQL如何正确格式化时间 MySQL是一个非常流行的关系型数据库管理系统,它提供了一种使用SQL语言来管理和操作数据库的方法。在MySQL中,时间格式化是一个常见的需求,但很多人可能并不了解如何正确格式化时间。在本文中,我们将介绍MyS
2023-08-16

mysql日期格式如何转为数字格式

这篇文章主要介绍了mysql日期格式如何转为数字格式的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql日期格式如何转为数字格式文章都会有所收获,下面我们一起来看看吧。mysq
2023-02-14

网络规划设计师TCP报文格式考点

  网络规划设计师TCP报文格式考点有哪些?为了方便考生及时有效的备考,编程学习网小编为大家精心整理了软考网络规划设计师TCP报文格式考试知识点,供大家参考和学习。如想获取更多计算机软件水平考试的模拟题及备考资料,请关注编程学习网网站的更新。  TCP报文格式  源端口:  目的端口:  序号:字节流当中的每一个字节都安顺序编
网络规划设计师TCP报文格式考点
2024-04-18

怎么将文件PDF格式转换成Word格式

这篇文章给大家分享的是有关怎么将文件PDF格式转换成Word格式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。(1)打开手机,在手机上的应用市场上搜索“PDF转换大师”,找到可以转换文档格式的工具,将其下载到手机
2023-06-05

MySQL Innodb行格式详解

目录1、指定行格式的语法2、COMPACT行格式2.1 变长字段长度列表2.2 NULL值列表2.3 记录头信息2.4 记录真实数据2.5 分析Compact行记录的内部结构3、Dynamic和Compressed行格式3.1 行溢出3.2
MySQL Innodb行格式详解
2024-09-11

mysql设置编码格式-

创建table的时候就使用utf8编码在每次创建表的时候都在最后加上 character set = utf8就可以很好的支持中文 create table xxx ( id int auto_increment, t
mysql设置编码格式-
2019-01-10

编程热搜

目录