mysqlプロトコルの初期化DBコマンドパッケージと解析
2106 ワード
git
https://github.com/sea-boat/mysql-protocol
概況
mysql接続デフォルトのschemaを変更したい場合は、クライアントが初期化DBコマンドパッケージをサービス側に送信できます.
mysql通信メッセージ構造
を選択します.
名前
説明
int<3>
payload長さ
the least significant byte firstに従って格納され、3バイトのpayloadと1バイトのシーケンス番号が新聞ヘッダに結合される
int<1>
シリアル番号
string
payload
新聞体、長さは前に指定したpayloadの長さです
DBコマンドパッケージの初期化
Payload
詳細:http://dev.mysql.com/doc/internals/en/com-init-db.html
コマンドパッケージ操作の初期化初期化コマンドパッケージ
https://github.com/sea-boat/mysql-protocol
概況
mysql接続デフォルトのschemaを変更したい場合は、クライアントが初期化DBコマンドパッケージをサービス側に送信できます.
mysql通信メッセージ構造
を選択します.
名前
説明
int<3>
payload長さ
the least significant byte firstに従って格納され、3バイトのpayloadと1バイトのシーケンス番号が新聞ヘッダに結合される
int<1>
シリアル番号
string
payload
新聞体、長さは前に指定したpayloadの長さです
DBコマンドパッケージの初期化
Payload
1 [02] COM_INIT_DB
string[EOF] schema name
詳細:http://dev.mysql.com/doc/internals/en/com-init-db.html
コマンドパッケージ操作の初期化
/**
*
* @author seaboat
* @date 2016-09-25
* @version 1.0
* email: [email protected]
* blog: http://blog.csdn.net/wangyangzhizhou
* mysql init db packet.
*/
public class InitDBPacket extends MySQLPacket {
public byte[] schema;
public void read(byte[] data) {
MySQLMessage mm = new MySQLMessage(data);
packetLength = mm.readUB3();
packetId = mm.read();
mm.read();//skip COM_INIT_DB
this.schema = mm.readBytes();
}
public void write(ByteBuffer buffer) {
BufferUtil.writeUB3(buffer, calcPacketSize());
buffer.put(packetId);
buffer.put(COM_INIT_DB);
buffer.put(schema);
}
@Override
public int calcPacketSize() {
int i = 1;
i += schema.length;
return i;
}
@Override
protected String getPacketInfo() {
return "MySQL Init DB Packet";
}
}
================================================================
の 「Tomcatカーネルデザイン 」はすでに で されており、 な はhttps://item.jd.com/12185360.html を てる. さん、ありがとうございました.
なぜ「Tomcatカーネル 」を くのか
=========================