EMQX连接Ocenbase报错

安装oceanbase,参考启动 OceanBase 数据库实例

sudo docker run -p 2881:2881 --name obstandalone -e MODE=mini -d oceanbase/oceanbase-ce:4.2.1

然后用emqx去连接,报错跟此issue类似,都有{{badmatch,32},这个可能是emqx没有match到的server status?这里并没有32这个状态码导致的吗?但是抓包看OceanBase 返回的是0x0022对应应该是34才对。

我测试了一下修改了两行代码修改了 server_status.hrl

-define(SERVER_STATUS_NO_INDEX_USED_AUTOCOMMIT, 16#0022). %% No index used, but auto-commit is enabled

然后修改mysql_protocol.erl,112行改为

BitMask = bnot (?SERVER_SESSION_STATE_CHANGED bor ?SERVER_STATUS_AUTOCOMMIT bor ?SERVER_STATUS_NO_INDEX_USED_AUTOCOMMIT),

然后可以正常连接使用 :melting_face: :melting_face: :melting_face:

牛,我明天反馈一下

查了一下mysql的文档以及golang的mysql库
https://github.com/go-sql-driver/mysql

不应该添加一个新的状态码(官方文档并没有0x0022),而应该是这样子,经过测试这样仍然可以正常工作

BitMask = bnot (?SERVER_SESSION_STATE_CHANGED bor ?SERVER_STATUS_AUTOCOMMIT bor ?SERVER_MORE_RESULTS_EXISTS),