新建数据源 skill
适用场景
- 需要为 dev / prod 环境各创建数据源
- 需要依据数据源类型(Type)定制
ConfigItemList的 Key/Value - Agent 读到 "创建 MySQL/MaxCompute/Hive/... 数据源" 类指令时直接查本 skill
命令 & 官方文档
- CLI:
aliyun dataphin-public create-data-source --help - OpenAPI:CreateDataSource
顶层参数骨架
--tenant-id <int> 必填 | 租户 ID
--prod-data-source-create <JSON> 可选 | 生产环境数据源体
--dev-data-source-create <JSON> 可选 | 开发环境数据源体(可关联 ProdDataSourceId)
生产体与开发体至少提供其一。若项目为 dev-prod 模式,建议同时提供,DevDataSourceCreate.ProdDataSourceId 对齐生产 ID。
ProdDataSourceCreate JSON 结构(通用骨架)
{
"Type": "<枚举值>", // 必填,详见下方"Type 枚举与 Key 清单"
"Name": "<string>", // 必填,数据源名
"Description": "<string>", // 可选
"CheckActivity": true, // 可选,默认 true;创建时是否校验连通性
"ConfigItemList": [ // 必填,连接配置项,不同 Type 的 Key 完全不同
{ "Key": "<配置 key>", "Value": "<配置值>" }
]
}
Type 枚举与 ConfigItemList Key 清单
Dataphin 支持 87 种 数据源类型,不同 Type 的 ConfigItemList Key/Value 组合完全不同。 为控制 SKILL.md 体积,完整清单(MySQL / MaxCompute / DORIS / POSTGRE_SQL / CLICKHOUSE / HANA / HIVE / SELECTDB 等)抽离到独立 reference:
📖 详见 references/type-config.md
常用规则速查:
- 大整数 ID 必须字符串化(JS Number 精度丢失):
prod-data-source-id等 - DEV-PROD 项目:先创建 PROD 数据源 → 再创建 DEV 并填
ProdDataSourceId - JDBC URL:MySQL 用
jdbc:mysql://host:port/db,PostgreSQL 用jdbc:postgresql://... - MaxCompute 必填:
endPoint/project/accessId/accessKey
DevDataSourceCreate 结构
{
"ProdDataSourceId": "7456935852434808960", // ⚠ 必须为字符串!见下方"大整数精度"警告
"DataSourceCreate": { // 结构与 ProdDataSourceCreate 完全一致
"Type": "...",
"Name": "...",
"ConfigItemList": [ ... ]
}
}
⚠ DEV 数据源必须关联 PROD:
ProdDataSourceId字段在数据库中为NOT NULL约束,独立创建 DEV 数据源(不传或传 null)会报null value in column "prod_data_source_id" violates not-null constraint。必须先建 PROD,拿到 PROD Id 后再建 DEV。⚠ 大整数 ID 精度截断(已踩坑):Dataphin 数据源 ID 为 19 位大整数(如
7456935852434808960),超过 JSNumber.MAX_SAFE_INTEGER(2^53)。如果ProdDataSourceId用数字格式传入("ProdDataSourceId": 7456935852434808960),CLI 的 JSON.parse 会将尾数截断为7456935852434809000,导致关联失败并报DevDataSourceInfo=None。解决方案:始终用字符串形式传递("ProdDataSourceId": "7456935852434808960")。
创建后连通性验证(必做)
数据源创建成功不代表真正可用,必须通过连通性测试才算完成。
# 1. 获取刚创建的数据源 ID(字符串格式,避免 JS 精度丢失)
aliyun dataphin-public list-data-source-with-config \
--profile <profile> --page 1 --page-size 10 --output json \
| jq '[.PageResult.DataSourceList[] | select(.ProdDataSourceInfo.Name == "<数据源名>") | .ProdDataSourceInfo.Id]'
# 2. 用 ID 做连通性测试
aliyun dataphin-public check-data-source-connectivity-by-id \
--profile <profile> --data-source-id <数据源ID> --output json
- 返回
"Success": true才代表连通。 - 若失败,检查 ConfigItemList Key 是否正确、网络是否可达,修正后使用
update-data-source-config --data-source-id <ID> --config-item-list '<JSON>'更新配置再重试。
关于页面连通性状态的说明:本技能通过 CLI 调用
check-data-source-connectivity-by-id执行连通性检查,CLI 返回结果即为实时检查结论(Success: true/false)。但当前 OpenAPI 不会将检查结果回写到数据库,因此 Dataphin 控制台页面上该数据源的「连通性检查」状态不会因本次 CLI 调用而变更。这不影响数据源的实际使用——只要 CLI 检查返回Success: true,数据源即可正常用于后续任务(建表、同步等)。如需页面状态同步更新,可在控制台手动点击一次「连通性测试」。
常见坑
- JSON 双重编码:早期版本传
--prod-data-source-create会被二次转义;已在 CLI 中修复,直接传原始 JSON 字符串即可(见 startup enhanced 记录) - shell 单引号 vs 双引号:
bash建议外单内双'{"Type":"MYSQL",...}';zsh若报错可改为$'...'或写到文件再--prod-data-source-create "$(cat x.json)" - Key 大小写:
jdbc.url必须小写,服务端大小写敏感 - 密码特殊字符:含
!、$、`的密码在 bash 单引号中安全,在双引号中会被插值;优先使用单引号 - CheckActivity=true 失败:说明 Key 清单或网络路由有问题,先用
check-data-source-connectivity(见同目录 skill)独立验证连接,再回来建源 - DEV 数据源独立创建报 null constraint violation:
prod_data_source_id为 NOT NULL,DEV 必须关联已存在的 PROD 数据源。建源顺序必须是:先 PROD → 拿 PROD Id → 再 DEV - 大整数 ProdDataSourceId 精度截断:19 位数据源 ID 作为 JSON number 传入会被 JS JSON.parse float64 截断尾数(如
...960→...000)。必须用字符串形式传递:"ProdDataSourceId": "7456935852434808960" - MySQL JDBC URL 安全参数:必须追加
?allowUrlInLocalInfile=false&autoDeserialize=false&allowLocalInfile=false&allowLoadLocalInfile=false,否则返回DATASOURCE_CONNECT_URL_NOT_SAFE_V2 - VPC 数据源需完整 VPC 三件套:
vpc.id+vpc.region.id+vpc.instance.id缺一不可,否则 VPC 反向访问链路建不起来 - StarRocks/Doris Type 枚举名:分别为
STARROCKS和DORIS(连写全大写),不是STAR_ROCKS(下划线分隔),填错报No enum constant PhysicalDataSourceTypeEnum.STAR_ROCKS - StarRocks/Doris
fenodes与load.url必须同时填写:仅填load.url会导致页面 "Load URL" 字段显示为空,因为页面展示读的是fenodesKey。两者值相同(FE HTTP 端口列表)。两种数据源的 ConfigItemList 结构完全相同
相关命令
aliyun dataphin-public check-data-source-connectivity— 建源前/建源失败时独立校验 ConfigItemList,见 check-data-source-connectivity.mdaliyun dataphin-public update-data-source-config— 更新已建数据源的 ConfigItemList(通过 Id)aliyun dataphin-public list-data-source-with-config— 列出现有数据源及其 ConfigItemList,可用于参考已存在 Type 的 Key 清单