.netcore 3.1使用mysql.data.dll查询报错,是否有专属oceanbase的.net core 驱动

【 使用环境 】.net core mvc框架
【 OB or 其他组件 】
【 使用版本 】企业版OceanBase3.1.2
【问题描述】
最近基于.net core3.1开发的项目,需要移植到企业版OceanBase3.1.2上。

通过社区版3.1.4ob测试时通过mysql.data.dll成功移植,但是正式部署到企业版ob上时出现错误。

使用MySQL.data.dll连接在查询非varchar类型的数据字段时就会报错,select count(*) 带有非varchar类型字段如int,bit,decimal类型都会报错System.Exception: The given key ‘83’ was not present in the dictionary

有设置连接串字符集charset=utf8,并没有用。
似乎有.net framework的OceanBase.data.dll,不知道是否有支持.net core的OceanBase.data.dll驱动。
经过排查似乎原因锁定在驱动的不兼容上,不知道除此之外是否还有什么解决办法

使用常规的mysql驱动无法连接observer?是否有对应的报错日志?


能连接上数据库,能select name 这样的varchar类型字段,不能select *和 select price 这样的数字类型字段。错误信息如上图

如下图select price 就报错,所有能在NuGet程序包管理下载到MySQL.data.dll的版本都试过了,目前用的最新的8.0.31

如下图只select name 执行成功,add list 成功,左下角count=2

@left23333 企业版是mysql模式吗? 如果是oracle 模式, 继续使用mysql 的驱动会有问题,

java 我们已经将oracle 模式的驱动开放了, 可以直接在https://github.com/oceanbase/obconnector-j

.net 还在实现中, 还没有release, 目前, 如果可以建议切到mysql 模式, 如果无法切到mysql 模式, 可否用java 完成功能

目前.net驱动推荐使用社区版。你可以使用ob社区版的驱动试试。

是MySQL模式,mysql租户

社区版不支持视图,存储过程。而且数据库必须用客户提供的,也不是我们能换的

楼主解决了吗?我也遇到相同的问题了~

  1. MySQL :: 下载 MySQL Connector/NET (存档版本) 下载驱动源代码
    2.修改ConnectionCharSetIndex

         /* New protocol with 16 bytes to describe server characteristics */
         owner.ConnectionCharSetIndex = (int)packet.ReadByte();
         if (owner.ConnectionCharSetIndex == 83)
         {
             owner.ConnectionCharSetIndex = 46;
         }
    

3.复制dll打项目