【 使用环境 】 测试环境
【 OB or 其他组件 】
oceanbase-ce-4.1.0.1
obproxy-ce-4.1.0.0-7
【 使用版本 】
【问题描述】C++使用obproxy连接时无法开启compress=true选项,使用libmariadb操作数据库,我们在测试时候发现开启compress=true不行,直接连接2881时可以,我们怀疑可能和 安全和协议有关,关闭了enable_ob_protocol_v2
选项还是不行
【复现路径】
C++编译代码,结合poco 1.12.4、libmariadb 3.3.1操作数据库
#include <iostream>
#include <string>
#include "Poco/Data/MySQL/Connector.h"
#include "Poco/Data/Session.h"
int main( int argc, char* argv[] )
{
Poco::Data::MySQL::Connector::registerConnector();
try
{
std::string _dbConnString;
_dbConnString = "host=xx.xx.xx.66;user=root@dora#dora;password=xxxxxx;port=2883;compress=true;auto-reconnect=true;secure-auth=true;protocol=tcp";
Poco::Data::Session ss( Poco::Data::MySQL::Connector::KEY, _dbConnString, 3 );
std::string szSql = "INSERT INTO `ibs5_ba`.tbl_history_moment_hour_202308(id,code,date_time,value,error,type) VALUES(1693824075937484800,'BA.AI.B.37','2023-08-22 11:15:00','0',0,'')";
ss << szSql, Poco::Data::Keywords::now;
}
catch( const Poco::Exception& exc )
{
std::cout << exc.displayText() << std::endl;
}
Poco::Data::MySQL::Connector::unregisterConnector();
return 0;
}
【问题现象及影响】
通过2883端口访问,执行到插入执行语句时,运行阻塞,调用堆栈查看位置为
int rc = mysql_stmt_prepare(_pHandle, query.c_str(), static_cast(query.length()));
通过2881端口访问,一切运行正常
【附件】