首先膜拜一下,楼主过于谦虚,能为一个新的数据库作贡献是非常强的了。
然后对于 LZ 的问题,
“底层是怎么判断的” :mysql 的 server 与 client 通信已经算是很高层的实现了,至于底层,楼主没说清楚到底多底层,看楼主的代码注释应该是指:Client (使用 jdbc 的客户端程序)识别 Server(数据库服务器)返回的 Packet (响应)的过程中,怎么判断 mysql 的错误类型的。
其实楼主已经分析得非常完整了,因为就是 MysqlIO 类的 checkErrorPacket 来判断的,更完整的调用链是:/ secureAuth411 / -> / checkErrorPacket() / -> / checkErrorPacket(-1) / -> / checkErrorPacket(resultPacket) / -> / 你要的逻辑 /
“不看 mysql 端 就是怎么知道密码错误...” : 关于这个,一般来说这些错误代码的规范,都会有公开的文档,方便 mysql 社区参考,所以不用担心一般不需要深入到 mysql 的源码里边,对于特定版本的规范也应该不一样,我就随便找了个版本索引一下了:
https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-error-sqlstates.html ,进去后直接搜“PASSWORD”大概率就能找到你想要的了。