Maison >base de données >tutoriel mysql >Introduction détaillée au package de commandes FieldList et analyse du protocole mysql
https://github.com/sea-boat/mysql-protocol
Lorsque le client mysql utilise la commande show column, cela correspond à ce package de commandes FieldList.
类型 | 名字 | 描述 |
---|---|---|
int5bdf4c78156c7953567bb5a0aef2fc53 | payload长度 | 按照the least significant byte first存储,3个字节的payload和1个字节的序列号组合成报文头 |
intf35d6e602fd7d0f0edfa6f7d103c1b57 | 序列号 | |
string | payload | 报文体,长度即为前面指定的payload长度 |
Charge utile
1 [04] COM_FIELD_LISTstring[NUL] tablestring[EOF] field wildcard
Plus de détails : http://dev.mysql.com/doc/internals/en/com-field-list.html
Commande FieldList package class
/** * * <pre class="brush:php;toolbar:false"><b>mysql field list packet.</b>* @author *
seaboat*
<b>email: </b>849586227@qq.com*
<b>blog: </b>http://www.php.cn/;/pre> * @version 1.0 * @see http://www.php.cn/ */public class FieldListPacket extends MySQLPacket { public byte flag; public byte[] table; public byte[] fieldWildcard; @Override public void read(byte[] data) { MySQLMessage mm = new MySQLMessage(data); packetLength = mm.readUB3(); packetId = mm.read(); flag = mm.read(); table = mm.readBytesWithNull(); fieldWildcard = mm.readBytes(); } @Override public void write(ByteBuffer buffer) { BufferUtil.writeUB3(buffer, calcPacketSize()); buffer.put(packetId); buffer.put(COM_FIELD_LIST); BufferUtil.writeWithNull(buffer, table); buffer.put(fieldWildcard); } @Override public int calcPacketSize() { int i = 1; i += table.length + 1; i += fieldWildcard.length; return i; } @Override protected String getPacketInfo() { return "MySQL Field List Packet"; } }
Ce qui précède est une introduction détaillée au package de commandes FieldList et une analyse du protocole mysql. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www. .php.cn) !