十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ToolJet 接入 MariaDB 数据源:连接配置、CRUD 查询与源码级实现解析

ToolJet 接入 MariaDB 数据源:连接配置、CRUD 查询与源码级实现解析 ToolJet 接入 MariaDB 数据源连接配置、CRUD 查询与源码级实现解析【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJetMariaDB 是 MySQL 生态中最流行的兼容分支ToolJet 内置了对自建与云端 MariaDB 服务器的完整支持可用来读写数据、驱动内部工具与数据看板。本文将基于 ToolJet 3.0.0-LTS 文档体系完整讲解 MariaDB 数据源的连接参数、SSL/SSH 安全选项、SQL 与图形化查询方式并结合仓库中 MariaDB 插件源码plugins/packages/mariadb/lib/index.ts剖析其连接池、事务保护与批量写入的底层实现帮助你既会用、又知其所以然。连接 MariaDB 数据源在 ToolJet 中建立 MariaDB 全局数据源global datasource有两种入口在查询面板query panel点击 Add new global datasource按钮从 ToolJet 仪表盘进入 Global Datasources即文档 />源码视角连接是如何建立的要理解上述参数的真实作用可以追踪插件源码中的连接建立链路。MariaDB 插件基于mariadb驱动^3.2.3见 plugins/packages/mariadb/package.json核心实现集中在 plugins/packages/mariadb/lib/index.ts。连接池配置buildConnectionPool()关键点包括使用mariadb.createPool()创建连接池connectionLimit取自表单缺省为10namedPlaceholders: true开启命名占位符支持:name形式参数绑定multipleStatements: true允许多语句执行connectTimeout: 6000060 秒连接超时连接会按数据源配置哈希缓存复用getCachedConnection/cacheConnectionWithConfiguration配合dataSourceId optionsHash作为缓存键数据源更新后自动失效重建。SSH 隧道实现createSSHStream()使用ssh2客户端建立forwardOut端口转发将本地流量转发到 MariaDB 的 host:port连接配置的stream回调将 SSH 通道作为 socket 传给驱动。SSH 连接设置了readyTimeout: 20000与keepaliveInterval: 10000并支持密码与私钥两种认证。若数据库在私有网络这是推荐的接入方式。连接测试testConnection()会执行SELECT 1 as val验证连通性失败时返回QueryError并携带驱动报错信息。GUI 模式的表/列选择器则通过查询information_schema.TABLES与information_schema.COLUMNS动态获取元数据invokeMethod中的listTables/listColumns。在 ToolJet 中查询 MariaDB连接成功后按以下步骤编写查询点击 Add按钮打开可用数据源列表在全局数据源区域选择MariaDB在编辑器中输入 SQL 查询点击Preview预览查询返回的数据或点击Run执行查询。:::tip 查询结果可以通过 Transformation数据转换进一步处理。详细用法请参阅 transformations.md。 :::CRUD 查询完整示例假设存在一个名为customers的 MariaDB 数据库我们先在其中创建一张users表包含以下列idinteger自增namevarcharageintegeremailvarcharCREATE TABLE user( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT, email VARCHAR(100) );上述命令会在customers数据库中创建users表。接下来逐一演示针对该表的增删改查命令。创建Insert插入单个用户INSERT INTO user (name, age, email) VALUES (John Doe, 25, johnexample.com);批量插入多个用户INSERT INTO user (name, age, email) VALUES (John Doe, 25, johnexample.com), (Jane Smith, 30, janeexample.com), (Bob Johnson, 35, bobexample.com);读取Select查询所有用户SELECT * FROM user;只查询指定列SELECT name, age, email FROM user;为查询添加条件与过滤SELECT name, age, email FROM user WHERE age 25;更新Update更新指定用户的年龄UPDATE user SET age 26 WHERE id 1;删除Delete删除指定用户DELETE FROM user WHERE id 1;实际使用中请根据具体需求调整取值与条件。以上命令覆盖了建表、插入、查询、更新与删除的完整流程。SQL 模式与 GUI 模式的底层行为执行查询时插件会根据queryOptions.mode分发到两种处理路径index.tsSQL 模式sql直接执行编辑器中的 SQL。query_params会过滤空键后以命名占位符方式绑定参数从底层防止 SQL 注入返回结果会经过toJson()序列化其中bigint类型会被转换为数字字符串避免精度丢失。GUI 模式gui不手写 SQL而是通过可视化操作生成查询。插件基于createQueryBuilder(mariadb)构建语句——在 plugins/packages/common/lib/queryBuilder.ts 中MariaDBDialect继承自MySQLDialect使用反引号引用标识符、LIMIT/OFFSET分页并支持eq/neq/gt/gte/lt/lte/like/in/not_in/between等操作符与sum/count/avg/min/max聚合函数。GUI 模式支持以下操作操作说明list_rows查询列表支持 where 过滤、排序、聚合与分组、limit/offset 分页create_row新增单行返回insertIdupdate_rows更新行基于过滤条件匹配upsert_rows按主键更新或插入delete_rows删除行支持 limit 限制bulk_insert批量插入多条记录bulk_update_pkey/bulk_upsert_pkey按主键批量更新 / 批量 upsert其中批量操作会按“每语句 65,000 个绑定参数上限”自动计算批次大小computeBatchSize结合PARAM_THRESHOLD 65_000将大批量记录拆分为多个批次并在同一事务中执行保证原子性。写操作的安全保护源码在 GUI 模式中内置了多重防误操作机制index.tsupdate_rows必须至少提供一个过滤条件where_filters否则直接报错 Update rows requires at least one filter condition.delete_rows必须提供过滤条件或 limit防止误删全表当“允许更新/删除多行”allow_multiple_updates关闭时若语句匹配超过一行事务会回滚并报错当“零记录视为成功”zero_records_as_success关闭时若影响行数为 0同样回滚报错所有写操作均在beginTransaction/commit/rollback包裹的事务中执行确保数据一致性。这些保护同样适用于 SQL 模式之外的图形化操作是生产环境安全使用数据库的关键设计。故障排查建议如果 MariaDB 数据源连接遇到问题可以按顺序尝试以下步骤确认 MariaDB 服务器正在运行并且 ToolJet 服务器可以访问到它核对凭据的拼写与大小写用户名、密码、库名均区分大小写尝试重启 ToolJet 服务器。如果问题依旧可以在 GUI 模式的连接表单中先使用Test Connection源码中执行SELECT 1验证观察返回的错误信息若为网络问题检查 ToolJet 与数据库之间的防火墙、端口默认 3306可达性若启用了 SSL/SSH还需逐一确认证书内容、SSH 认证方式与目标地址是否正确。相关资源数据源总览与全局数据源管理data-sources/overview.md查询结果数据转换指南tutorial/transformations.md插件核心实现plugins/packages/mariadb/lib/index.ts连接参数清单与表单约束plugins/packages/mariadb/lib/manifest.json查询类型定义plugins/packages/mariadb/lib/types.ts多方言 SQL 构建器含MariaDBDialectplugins/packages/common/lib/queryBuilder.ts【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表