SuperAPI AI 工具集

tidbx-javascript-mysql2

数据与分析

查看项目

更新于 10-16 03:41

技能介绍

本技能用于从 JavaScript/TypeScript(Node.js 运行时)通过 mysql2 驱动(promise API)连接 TiDB,并给出可复制到项目中的小型可运行片段。注意区分 mysql2 与 mysqljs/mysql:本技能针对 mysql2(npm i mysql2),使用 mysql2/promise;若使用基于回调的 mysqljs/mysql(npm i mysql),应改用 tidbx-javascript-mysqljs。适用场景包括:通过 mysql2 连接 TiDB;需要 TiDB Cloud 公共端点的 TLS 指导或 Dedicated 的 CA 证书配置;需要“连接 → SELECT VERSION() → CRUD”的最小模板。应用代码建议优先使用 ORM/查询构建器,如 Prisma(见 tidbx-prisma)或 Kysely(见 tidbx-kysely)。编码规则:不要硬编码凭据,使用 DATABASE_URL 或 TIDB_* 环境变量;优先使用 mysql2/promise 与参数化查询(execute()/query() 的 ? 占位符);应用/服务默认使用连接池(createPool),关闭时 await pool.end();对 TiDB Cloud 使用连接池时设置空闲超时不超过 300 秒(如 idleTimeout: 300_000),无服务器环境保持较小 connectionLimit;除非明确需要,不建议 multipleStatements: true。连接前确认部署类型(TiDB Cloud Starter/Essential 或 Dedicated,或自管理)、端点类型(公共或私有/VPC)、配置方式(优先 DATABASE_URL,其次 TIDB_HOST/TIDB_USER 等选项);使用 TiDB Cloud 公共端点时启用 TLS。安装:npm i mysql2;如需 .env 支持:npm i dotenv。最小示例一:用 DATABASE_URL 连接,import { createConnection } from 'mysql2/promise',await createConnection(process.env.DATABASE_URL),执行 query('SELECT VERSION() AS v'),最后 await conn.end();注意 URL 编码密码特殊字符,并保留 TiDB Cloud 连接对话框中提供的 TLS 参数。示例二:用连接选项和显式 TLS/CA(常见于 TiDB Cloud Dedicated),通过 createPool 配置 host、port、user、password、database、ssl(minVersion: 'TLSv1.2',ca 读取 TIDB_CA_PATH),相关环境变量包括 TIDB_HOST、TIDB_PORT(默认 4000)、TIDB_USER、TIDB_PASSWORD、TIDB_DATABASE、TIDB_ENABLE_SSL、TIDB_CA_PATH。CRUD 建议用 execute() 参数化,例如 INSERT INTO players (coins, goods) VALUES (?, ?);多步更新使用显式事务(beginTransaction、execute、commit,异常时 rollback,最后 release)。本技能附带 scripts/validate_connection.mjs 与 templates/quickstart.mjs。限制:资料未提供具体价格、性能或平台兼容性细节。