From c7b8663c06154a5b4c083ee73a654d8e70524fc1 Mon Sep 17 00:00:00 2001 From: Syngnat Date: Fri, 15 May 2026 10:54:37 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(oceanbase):=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20OBClient=20capability=20=E6=B3=A8=E5=85=A5=E6=89=93?= =?UTF-8?q?=E9=80=9A=20Oracle=20=E7=A7=9F=E6=88=B7=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 双轨路由:Oracle 协议路径按 mysql wire 端口预探测自动选择,OB MySQL wire 端口走 OBClient capability 注入(复刻 Navicat),其他端口走标准 Oracle TNS - 默认注入 4 组 OBClient capability attribute(_client_name=OceanBase Connector/J、_client_version、__ob_client_attribute_capability_flag、ob_capability_flag),用户在 ConnectionParams 设置的同名键优先级更高 - 恢复 applyOracleChangesMySQLWire:OBClient 路径写操作使用 mysql "?" 占位符 + Oracle 双引号引用标识符,配合 sql_mode='ANSI_QUOTES' 让服务端按 Oracle 解析 - 删除旧的 errOceanBaseMySQLWireOnOracleRoute fail-fast 死路提示,重写文件头注释固化反转决策(基于用户报告 Navicat 用 OceanBase 数据源同端口连通的真实证据) - 前端 ConnectionModal 文案对齐:去掉「必须 OBProxy Oracle listener」的误导,改为说明自动路由 + connectionAttributes 调试入口 - 新增 5 个单元测试覆盖默认注入、用户覆盖、DSN 透传、mysql wire 占位符;刷新 OceanBase agent revision --- frontend/src/components/ConnectionModal.tsx | 8 +- internal/db/driver_agent_revisions_gen.go | 30 +- internal/db/mysql_impl.go | 5 +- internal/db/oceanbase_impl.go | 383 ++++++++++++++++++- internal/db/oceanbase_impl_test.go | 399 +++++++++++++++----- 5 files changed, 690 insertions(+), 135 deletions(-) diff --git a/frontend/src/components/ConnectionModal.tsx b/frontend/src/components/ConnectionModal.tsx index 4ad5c80..f60a187 100644 --- a/frontend/src/components/ConnectionModal.tsx +++ b/frontend/src/components/ConnectionModal.tsx @@ -4758,7 +4758,13 @@ const ConnectionModal: React.FC<{ + MySQL 租户选择 MySQL;Oracle 租户选择 Oracle。GoNavi 会根据端口自动选择:OB MySQL wire 端口走 OBClient capability 注入(与 Navicat 相同路径),OBProxy Oracle listener 端口走标准 TNS。 +
+ 如果 Oracle 租户连接报「Error 1235」或 OBClient 握手失败,可在「连接参数」字段通过 connectionAttributes=key1:value1,key2:value2 覆盖 GoNavi 默认注入的 OBClient capability。 + + } style={{ marginBottom: 0 }} >