feat(clickhouse): 支持自定义连接兼容 JDBC DSN

- 解析 ClickHouse 与 JDBC 风格 DSN 并映射协议、TLS、认证及数据库参数
- 统一连接缓存、DDL、数据同步与导出 driver-agent 生命周期
- 保持 DSN 加密存储并补充前后端回归测试和多语言提示

Fixes #383
This commit is contained in:
Syngnat
2026-07-18 17:48:19 +08:00
parent 0136b87311
commit fd093b3325
19 changed files with 1280 additions and 47 deletions

View File

@@ -4845,6 +4845,8 @@
"db.backend.error.connection_open_failed_prefix": "Datenbankverbindung konnte nicht geöffnet werden: ",
"db.backend.error.connection_verify_failed_prefix": "Verbindung konnte nach dem Aufbau nicht verifiziert werden: ",
"db.backend.error.create_table_statement_not_found": "Die CREATE TABLE-Anweisung wurde nicht gefunden",
"db.backend.error.custom_clickhouse_dsn_invalid": "Die DSN der benutzerdefinierten ClickHouse-Verbindung ist ungültig. Verwenden Sie eine Einzelknoten-Adresse im Format clickhouse://, http(s)://, jdbc:clickhouse:// oder jdbc:ch://",
"db.backend.error.custom_clickhouse_dsn_required": "Für eine benutzerdefinierte ClickHouse-Verbindung ist eine DSN im Format clickhouse://, http(s)://, jdbc:clickhouse:// oder jdbc:ch:// erforderlich",
"db.backend.error.custom_driver_system_odbc_unsupported_prefix": "Datenbankverbindung konnte nicht geöffnet werden: Benutzerdefinierte Verbindungen unterstützen es nicht, den System-ODBC/JDBC-Treibernamen \"{{driver}}\" direkt einzugeben. Geben Sie stattdessen einen bereits in GoNavi registrierten Go database/sql-Treibernamen ein. Der aktuelle Build registriert keinen generischen ODBC-Treiber, daher wird eine Verbindung zu InterSystems IRIS über \"{{driver}}\" derzeit noch nicht unterstützt: ",
"db.backend.error.custom_driver_unregistered_prefix": "Datenbankverbindung konnte nicht geöffnet werden: Der benutzerdefinierte Verbindungs-Treiber \"{{driver}}\" ist in GoNavi nicht registriert. Geben Sie statt eines System-ODBC/JDBC-Treibernamens einen registrierten Go database/sql-Treibernamen ein: ",
"db.backend.error.data_source_type_required": "Wählen Sie zuerst einen Datenquellentyp aus",
@@ -5001,7 +5003,7 @@
"dev.perf_data_grid.ui_version.legacy_short": "Alt",
"dev.perf_data_grid.ui_version.v2": "Neue UI",
"dev.perf_data_grid.ui_version.v2_short": "Neu",
"driver.guidance.customConnectionDriverHelp": "Unterstützt: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase; Aliasse: postgresql/pgx, open_gauss/open-gauss, dm8, kingbase8/kingbasees/kingbasev8. Geben Sie einen bereits von GoNavi registrierten Go database/sql-Treibernamen ein. Geben Sie keinen System-ODBC/JDBC-Treibernamen direkt ein und importieren Sie kein JDBC Jar.",
"driver.guidance.customConnectionDriverHelp": "Unterstützt: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase, clickhouse; Aliasse: postgresql/pgx, open_gauss/open-gauss, dm8, kingbase8/kingbasees/kingbasev8. Benutzerdefinierte ClickHouse-Verbindungen akzeptieren clickhouse://, http(s)://, jdbc:clickhouse:// oder jdbc:ch:// und verwenden den GoNavi ClickHouse driver-agent; ein JDBC Jar wird nicht geladen. Geben Sie für andere Treiber einen in GoNavi registrierten Go database/sql-Treibernamen und keinen System-ODBC/JDBC-Treibernamen ein.",
"driver_manager.action.close": "Schließen",
"driver_manager.action.import_directory": "Treiberordner importieren",
"driver_manager.action.import_package": "Treiberpaket importieren",

View File

@@ -4845,6 +4845,8 @@
"db.backend.error.connection_open_failed_prefix": "Failed to open database connection: ",
"db.backend.error.connection_verify_failed_prefix": "Failed to verify the established connection: ",
"db.backend.error.create_table_statement_not_found": "The CREATE TABLE statement was not found",
"db.backend.error.custom_clickhouse_dsn_invalid": "The ClickHouse custom connection DSN is invalid. Use a single-node clickhouse://, http(s)://, jdbc:clickhouse://, or jdbc:ch:// address",
"db.backend.error.custom_clickhouse_dsn_required": "A ClickHouse custom connection requires a clickhouse://, http(s)://, jdbc:clickhouse://, or jdbc:ch:// DSN",
"db.backend.error.custom_driver_system_odbc_unsupported_prefix": "Failed to open database connection: custom connections do not support entering the system ODBC/JDBC driver name \"{{driver}}\" directly. Enter a Go database/sql driver name already registered by GoNavi. The current build does not register a generic ODBC driver, so connecting to InterSystems IRIS through \"{{driver}}\" is not supported yet: ",
"db.backend.error.custom_driver_unregistered_prefix": "Failed to open database connection: the custom connection driver \"{{driver}}\" is not registered in GoNavi. Enter a registered Go database/sql driver name instead of a system ODBC/JDBC driver name: ",
"db.backend.error.data_source_type_required": "Select a data source type first",
@@ -5001,7 +5003,7 @@
"dev.perf_data_grid.ui_version.legacy_short": "Legacy",
"dev.perf_data_grid.ui_version.v2": "New UI",
"dev.perf_data_grid.ui_version.v2_short": "New",
"driver.guidance.customConnectionDriverHelp": "Supported: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase; aliases include postgresql/pgx, open_gauss/open-gauss, dm8, kingbase8/kingbasees/kingbasev8. Enter a Go database/sql driver name already registered by GoNavi. Do not enter a system ODBC/JDBC driver name directly or import a JDBC Jar.",
"driver.guidance.customConnectionDriverHelp": "Supported: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase, clickhouse; aliases include postgresql/pgx, open_gauss/open-gauss, dm8, kingbase8/kingbasees/kingbasev8. ClickHouse custom connections accept clickhouse://, http(s)://, jdbc:clickhouse://, or jdbc:ch:// DSNs and reuse the GoNavi ClickHouse driver-agent; no JDBC Jar is loaded. For other drivers, enter a Go database/sql driver name already registered by GoNavi, not a system ODBC/JDBC driver name.",
"driver_manager.action.close": "Close",
"driver_manager.action.import_directory": "Import Driver Directory",
"driver_manager.action.import_package": "Import Driver Package",

View File

@@ -4845,6 +4845,8 @@
"db.backend.error.connection_open_failed_prefix": "データベース接続を開けませんでした: ",
"db.backend.error.connection_verify_failed_prefix": "接続確立後の検証に失敗しました: ",
"db.backend.error.create_table_statement_not_found": "CREATE TABLE 文が見つかりませんでした",
"db.backend.error.custom_clickhouse_dsn_invalid": "ClickHouse カスタム接続の DSN が無効です。clickhouse://、http(s)://、jdbc:clickhouse://、または jdbc:ch:// 形式の単一ノードアドレスを使用してください",
"db.backend.error.custom_clickhouse_dsn_required": "ClickHouse カスタム接続には clickhouse://、http(s)://、jdbc:clickhouse://、または jdbc:ch:// 形式の DSN が必要です",
"db.backend.error.custom_driver_system_odbc_unsupported_prefix": "データベース接続を開けませんでした: カスタム接続ではシステム ODBC/JDBC ドライバー名 \"{{driver}}\" を直接入力できません。GoNavi に登録済みの Go database/sql ドライバー名を入力してください。現在のビルドには汎用 ODBC ドライバーが登録されていないため、\"{{driver}}\" 経由で InterSystems IRIS に接続することはまだサポートされていません: ",
"db.backend.error.custom_driver_unregistered_prefix": "データベース接続を開けませんでした: カスタム接続ドライバー \"{{driver}}\" は GoNavi に登録されていません。システム ODBC/JDBC ドライバー名ではなく、登録済みの Go database/sql ドライバー名を入力してください: ",
"db.backend.error.data_source_type_required": "先にデータソースタイプを選択してください",
@@ -5001,7 +5003,7 @@
"dev.perf_data_grid.ui_version.legacy_short": "旧",
"dev.perf_data_grid.ui_version.v2": "新 UI",
"dev.perf_data_grid.ui_version.v2_short": "新",
"driver.guidance.customConnectionDriverHelp": "対応済み: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase。エイリアス: postgresql/pgx、open_gauss/open-gauss、dm8、kingbase8/kingbasees/kingbasev8。GoNavi に登録済みの Go database/sql ドライバー名を入力してください。システム ODBC/JDBC ドライバー名を直接入力したり、JDBC Jar を取り込んだりしないでください。",
"driver.guidance.customConnectionDriverHelp": "対応済み: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase, clickhouse。エイリアス: postgresql/pgx、open_gauss/open-gauss、dm8、kingbase8/kingbasees/kingbasev8。ClickHouse カスタム接続では clickhouse://、http(s)://、jdbc:clickhouse://、jdbc:ch:// の DSN を使用でき、GoNavi ClickHouse driver-agent を再利用します。JDBC Jar は読み込みません。その他のドライバーには、システム ODBC/JDBC 名ではなく GoNavi に登録済みの Go database/sql ドライバー名を入力しください。",
"driver_manager.action.close": "閉じる",
"driver_manager.action.import_directory": "ドライバーディレクトリを取り込む",
"driver_manager.action.import_package": "ドライバーパッケージを取り込む",

View File

@@ -672,7 +672,7 @@ export const messages: Record<SupportedLanguage, Record<MessageKey, string>> = {
"driver.guidance.localImportSingleFileHelp":
"行内“导入驱动包”仅用于单个驱动文件/总包(如 `mariadb-driver-agent`、`mariadb-driver-agent.exe`、`GoNavi-DriverAgents.zip`),不支持直接导入 JDBC Jar批量导入请使用上方“导入驱动目录”。",
"driver.guidance.customConnectionDriverHelp":
"已支持: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase别名支持 postgresql/pgx、open_gauss/open-gauss、dm8、kingbase8/kingbasees/kingbasev8。请填写 GoNavi 已注册的 Go database/sql 驱动名,不能直接填写系统 ODBC/JDBC 驱动名或导入 JDBC Jar。",
"已支持: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase, clickhouse;别名支持 postgresql/pgx、open_gauss/open-gauss、dm8、kingbase8/kingbasees/kingbasev8。ClickHouse 自定义连接可填写 clickhouse://、http(s)://、jdbc:clickhouse:// 或 jdbc:ch:// DSN并复用 GoNavi ClickHouse driver-agent不会加载 JDBC Jar。其他驱动请填写 GoNavi 已注册的 Go database/sql 驱动名,不能直接填写系统 ODBC/JDBC 驱动名。",
"driver.modal.title": "驱动管理",
"driver.modal.footer.refresh": "刷新",
"driver.modal.footer.networkCheck": "网络检测",
@@ -1574,7 +1574,7 @@ export const messages: Record<SupportedLanguage, Record<MessageKey, string>> = {
"driver.guidance.localImportSingleFileHelp":
"The inline \"Import driver package\" action only accepts a single driver file or bundle (for example `mariadb-driver-agent`, `mariadb-driver-agent.exe`, `GoNavi-DriverAgents.zip`). It does not import JDBC Jar directly. Use \"Import driver directory\" above for batch import.",
"driver.guidance.customConnectionDriverHelp":
"Supported: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase; aliases include postgresql/pgx, open_gauss/open-gauss, dm8, kingbase8/kingbasees/kingbasev8. Enter a Go database/sql driver name already registered by GoNavi. Do not enter a system ODBC/JDBC driver name directly or import a JDBC Jar.",
"Supported: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase, clickhouse; aliases include postgresql/pgx, open_gauss/open-gauss, dm8, kingbase8/kingbasees/kingbasev8. ClickHouse custom connections accept clickhouse://, http(s)://, jdbc:clickhouse://, or jdbc:ch:// DSNs and reuse the GoNavi ClickHouse driver-agent; no JDBC Jar is loaded. For other drivers, enter a Go database/sql driver name already registered by GoNavi, not a system ODBC/JDBC driver name.",
"driver.modal.title": "Driver Manager",
"driver.modal.footer.refresh": "Refresh",
"driver.modal.footer.networkCheck": "Network check",

View File

@@ -4845,6 +4845,8 @@
"db.backend.error.connection_open_failed_prefix": "Не удалось открыть подключение к базе данных: ",
"db.backend.error.connection_verify_failed_prefix": "Не удалось проверить подключение после установления: ",
"db.backend.error.create_table_statement_not_found": "Инструкция CREATE TABLE не найдена",
"db.backend.error.custom_clickhouse_dsn_invalid": "Недопустимая DSN пользовательского подключения ClickHouse. Используйте адрес одного узла в формате clickhouse://, http(s)://, jdbc:clickhouse:// или jdbc:ch://",
"db.backend.error.custom_clickhouse_dsn_required": "Для пользовательского подключения ClickHouse требуется DSN в формате clickhouse://, http(s)://, jdbc:clickhouse:// или jdbc:ch://",
"db.backend.error.custom_driver_system_odbc_unsupported_prefix": "Не удалось открыть подключение к базе данных: пользовательские подключения не поддерживают прямой ввод имени системного драйвера ODBC/JDBC \"{{driver}}\". Укажите имя драйвера Go database/sql, уже зарегистрированного в GoNavi. Текущая сборка не регистрирует универсальный ODBC-драйвер, поэтому подключение к InterSystems IRIS через \"{{driver}}\" пока не поддерживается: ",
"db.backend.error.custom_driver_unregistered_prefix": "Не удалось открыть подключение к базе данных: драйвер пользовательского подключения \"{{driver}}\" не зарегистрирован в GoNavi. Укажите зарегистрированное имя драйвера Go database/sql вместо имени системного драйвера ODBC/JDBC: ",
"db.backend.error.data_source_type_required": "Сначала выберите тип источника данных",
@@ -5001,7 +5003,7 @@
"dev.perf_data_grid.ui_version.legacy_short": "старый",
"dev.perf_data_grid.ui_version.v2": "Новый UI",
"dev.perf_data_grid.ui_version.v2_short": "новый",
"driver.guidance.customConnectionDriverHelp": "Поддерживаются: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase; псевдонимы: postgresql/pgx, open_gauss/open-gauss, dm8, kingbase8/kingbasees/kingbasev8. Укажите имя драйвера Go database/sql, уже зарегистрированного в GoNavi. Не вводите напрямую имя системного драйвера ODBC/JDBC и не импортируйте JDBC Jar.",
"driver.guidance.customConnectionDriverHelp": "Поддерживаются: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase, clickhouse; псевдонимы: postgresql/pgx, open_gauss/open-gauss, dm8, kingbase8/kingbasees/kingbasev8. Пользовательские подключения ClickHouse принимают DSN clickhouse://, http(s)://, jdbc:clickhouse:// или jdbc:ch:// и используют GoNavi ClickHouse driver-agent; JDBC Jar не загружается. Для других драйверов укажите зарегистрированное в GoNavi имя Go database/sql, а не системное имя ODBC/JDBC.",
"driver_manager.action.close": "Закрыть",
"driver_manager.action.import_directory": "Импортировать каталог драйверов",
"driver_manager.action.import_package": "Импортировать пакет драйвера",

View File

@@ -4845,6 +4845,8 @@
"db.backend.error.connection_open_failed_prefix": "打开数据库连接失败:",
"db.backend.error.connection_verify_failed_prefix": "连接建立后验证失败:",
"db.backend.error.create_table_statement_not_found": "未找到 CREATE TABLE 语句",
"db.backend.error.custom_clickhouse_dsn_invalid": "ClickHouse 自定义连接 DSN 无效;请使用 clickhouse://、http(s)://、jdbc:clickhouse:// 或 jdbc:ch:// 格式的单节点地址",
"db.backend.error.custom_clickhouse_dsn_required": "ClickHouse 自定义连接需要填写 clickhouse://、http(s)://、jdbc:clickhouse:// 或 jdbc:ch:// 格式的 DSN",
"db.backend.error.custom_driver_system_odbc_unsupported_prefix": "打开数据库连接失败:自定义连接不支持直接填写系统 ODBC/JDBC 驱动名 \"{{driver}}\"。请填写 GoNavi 已注册的 Go database/sql 驱动名。当前构建未注册通用 ODBC 驱动,因此暂不支持通过 \"{{driver}}\" 连接 InterSystems IRIS",
"db.backend.error.custom_driver_unregistered_prefix": "打开数据库连接失败:自定义连接驱动 \"{{driver}}\" 未在 GoNavi 中注册;请填写已注册的 Go database/sql 驱动名,不能填写系统 ODBC/JDBC 驱动名:",
"db.backend.error.data_source_type_required": "请先选择数据源类型",
@@ -5001,7 +5003,7 @@
"dev.perf_data_grid.ui_version.legacy_short": "旧版",
"dev.perf_data_grid.ui_version.v2": "新版 UI",
"dev.perf_data_grid.ui_version.v2_short": "新版",
"driver.guidance.customConnectionDriverHelp": "已支持: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase别名支持 postgresql/pgx、open_gauss/open-gauss、dm8、kingbase8/kingbasees/kingbasev8。请填写 GoNavi 已注册的 Go database/sql 驱动名,不能直接填写系统 ODBC/JDBC 驱动名或导入 JDBC Jar。",
"driver.guidance.customConnectionDriverHelp": "已支持: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase, clickhouse;别名支持 postgresql/pgx、open_gauss/open-gauss、dm8、kingbase8/kingbasees/kingbasev8。ClickHouse 自定义连接可填写 clickhouse://、http(s)://、jdbc:clickhouse:// 或 jdbc:ch:// DSN并复用 GoNavi ClickHouse driver-agent不会加载 JDBC Jar。其他驱动请填写 GoNavi 已注册的 Go database/sql 驱动名,不能直接填写系统 ODBC/JDBC 驱动名。",
"driver_manager.action.close": "关闭",
"driver_manager.action.import_directory": "导入驱动目录",
"driver_manager.action.import_package": "导入驱动包",

View File

@@ -4845,6 +4845,8 @@
"db.backend.error.connection_open_failed_prefix": "開啟資料庫連線失敗:",
"db.backend.error.connection_verify_failed_prefix": "連線建立後驗證失敗:",
"db.backend.error.create_table_statement_not_found": "未找到 CREATE TABLE 語句",
"db.backend.error.custom_clickhouse_dsn_invalid": "ClickHouse 自訂連線 DSN 無效;請使用 clickhouse://、http(s)://、jdbc:clickhouse:// 或 jdbc:ch:// 格式的單一節點位址",
"db.backend.error.custom_clickhouse_dsn_required": "ClickHouse 自訂連線需要填寫 clickhouse://、http(s)://、jdbc:clickhouse:// 或 jdbc:ch:// 格式的 DSN",
"db.backend.error.custom_driver_system_odbc_unsupported_prefix": "開啟資料庫連線失敗:自訂連線不支援直接填寫系統 ODBC/JDBC 驅動名稱 \"{{driver}}\"。請填寫 GoNavi 已註冊的 Go database/sql 驅動名稱。目前建置未註冊通用 ODBC 驅動,因此暫不支援透過 \"{{driver}}\" 連線 InterSystems IRIS",
"db.backend.error.custom_driver_unregistered_prefix": "開啟資料庫連線失敗:自訂連線驅動 \"{{driver}}\" 未在 GoNavi 中註冊;請填寫已註冊的 Go database/sql 驅動名稱,不能填寫系統 ODBC/JDBC 驅動名稱:",
"db.backend.error.data_source_type_required": "請先選擇資料來源類型",
@@ -5001,7 +5003,7 @@
"dev.perf_data_grid.ui_version.legacy_short": "舊版",
"dev.perf_data_grid.ui_version.v2": "新版 UI",
"dev.perf_data_grid.ui_version.v2_short": "新版",
"driver.guidance.customConnectionDriverHelp": "已支援: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase別名支援 postgresql/pgx、open_gauss/open-gauss、dm8、kingbase8/kingbasees/kingbasev8。請填寫 GoNavi 已註冊的 Go database/sql 驅動名稱,不要直接填寫系統 ODBC/JDBC 驅動名稱,也不要匯入 JDBC Jar。",
"driver.guidance.customConnectionDriverHelp": "已支援: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase, clickhouse;別名支援 postgresql/pgx、open_gauss/open-gauss、dm8、kingbase8/kingbasees/kingbasev8。ClickHouse 自訂連線可填寫 clickhouse://、http(s)://、jdbc:clickhouse:// 或 jdbc:ch:// DSN並重用 GoNavi ClickHouse driver-agent不會載入 JDBC Jar。其他驅動請填寫 GoNavi 已註冊的 Go database/sql 驅動名稱,不要直接填寫系統 ODBC/JDBC 驅動名稱。",
"driver_manager.action.close": "關閉",
"driver_manager.action.import_directory": "匯入驅動目錄",
"driver_manager.action.import_package": "匯入驅動包",