Skip to content

数据库常见问题

本页汇总数据库创建、表结构、测试与线上数据、渠道隔离、工作流节点和数据维护中的常见问题。排查时不要只看“数据库名称相同”,还要同时核对工作空间、数据库资源 ID、数据环境、渠道和最终用户范围。

创建与资源范围

低代码智能体、应用或工作流可以添加多少个数据库?

当前资源库和项目页面没有给出统一、固定的数据库数量承诺。旧文档中的“智能体最多添加 3 张表”等限制属于历史版本,不能作为当前规则。

实际可添加数量以当前租户套餐、项目编辑器提示和接口返回为准。即使页面允许添加多个数据库,也应按业务边界拆分,避免让一个工作流同时依赖大量结构相似、含义不清的表。

当前入口能否直接连接本地 MySQL 或其他外部数据库?

当前 资源库 > 数据库 创建的是 AIOS 托管数据库,创建表单没有提供任意外部数据库连接参数。旧文档中的外部云数据库关联步骤不属于这个入口。

需要访问外部数据库时,应根据当前环境提供的插件、API 或受控集成能力实现,并把凭据放在安全的服务端配置中,不能写进工作流 SQL、前端代码或文档。

应用内数据表和资源库数据库是同一个资源吗?

不是。应用内创建的数据表属于该应用作用域;资源库数据库属于当前工作空间,可以被有权访问的项目或工作流引用。两者名称相同也不会自动同步数据、字段或权限。

为什么复制项目或工作流到其他空间后数据库失效?

复制的是流程定义,不会把原空间的数据库资源、数据和权限视为目标空间中的同一个资源。进入目标空间后需要重新选择数据库,核对字段映射、测试数据、渠道配置和权限,再重新试运行。

测试数据与线上数据

测试数据和线上数据有什么区别?

  • 测试数据:用于项目、智能体和工作流的开发调试,不会自动成为正式业务数据。
  • 线上数据:由正式发布渠道、API 或 SDK 运行产生,面向真实业务。

两套数据使用相同表结构,但存储环境相互隔离。测试记录不会自动复制到线上,线上记录也不会自动显示在测试数据页签。

为什么调试时能查到,发布后或 API 调用时查不到?

最常见原因是调试入口读取测试数据,而正式渠道或 API 读取线上数据。依次检查:

  1. 当前查看的是测试数据还是线上数据。
  2. 调用渠道的“渠道读写配置”指向哪个环境。
  3. 正式环境是否已经写入对应记录。
  4. 调试和正式调用是否使用同一终端用户 ID。
  5. 数据库是否采用渠道隔离,记录的 sys_platform 是否与当前渠道一致。

不要为了让 API 临时查到数据就直接改变全部渠道配置。先确认测试目的,并在验证后恢复符合发布方案的读写目标。

同一工作空间的不同工作流能共享测试数据吗?

如果它们引用同一个资源库数据库,并且用户与渠道范围允许访问,就可以读取对应测试记录。应用内创建的数据表仍受应用作用域限制,不能因为位于同一工作空间就默认共享。

渠道读写配置和渠道隔离模式有什么区别?

配置决定什么
渠道读写配置某个渠道操作测试数据还是线上数据
渠道隔离/共享模式在同一数据环境中,不同渠道能否访问同一批记录

两项需要同时满足。例如 API 指向线上数据,但数据库采用渠道隔离时,API 仍只能访问线上环境中属于 API 渠道的记录。

为什么切换到线上数据后页面是空的?

线上数据不会从测试环境自动初始化。先确认表结构已发布并由正式渠道写入数据,再检查渠道筛选、搜索条件、最终用户范围和当前工作空间。不要直接把测试数据整表导入线上,除非这些记录确实是经过审核的正式初始数据。

用户、渠道与权限

为什么数据库里有记录,当前用户仍然查不到?

数据库记录还受到查询权限模式、最终用户和渠道约束。检查:

  • 数据库是单用户模式还是多用户模式。
  • 调用方传入的最终用户 ID 是否与记录 uuid 对应。
  • 当前渠道是否与记录 sys_platform 对应。
  • 查询发生在测试环境还是线上环境。
  • 条件表达式是否额外过滤了记录。

为什么多用户模式仍然查不到其他用户的数据?

多用户模式扩大的是工作流数据库节点在当前可访问范围内的用户数据,不会自动跨越工作空间、数据环境或渠道隔离。先确认操作确实发生在工作流数据库节点中,再核对渠道共享模式。

为什么同一个用户从 AIOS 和 API 看到的数据不同?

AIOS 和 API 是不同渠道。采用渠道隔离时,两个渠道的数据不会自动互通;即使采用渠道共享,也要保证两个入口映射到同一个稳定终端用户 ID,并指向相同的数据环境。

表结构与字段

为什么提示字段名是保留字?

不要使用数据库关键字或平台系统字段作为自定义字段名。当前系统字段包括:

  • id
  • sys_platform
  • uuid
  • created_at

旧文档中的 bstudio_create_time 是历史字段名。出现报错时,先检查字段名,再检查自定义 SQL 中的语法和输出别名。不要通过大小写变化继续使用同一个保留字。

为什么字段类型或必填设置修改后保存失败?

已有数据可能无法转换为新类型,或现有空值不满足新的必填约束。先在测试环境导出备份并检查异常值,再分步骤迁移:清理数据、增加新字段、回填、切换工作流引用,最后删除旧字段。

新字段已经保存,为什么工作流节点里仍然看不到?

节点可能保留了旧的资源结构缓存,或者选择的是另一个同名数据库。重新打开资源选择器并选择正确数据库;仍未更新时刷新编辑器,核对数据库资源 ID,然后重新配置输入和输出字段。

能否修改或导入系统字段?

不能把 idsys_platformuuidcreated_at 当作普通业务字段维护。页面新增、CSV/JSON 导入和工作流写入只应提供自定义字段;系统字段由平台根据环境、渠道和用户上下文生成。

导入、导出与备份

为什么 CSV 或 JSON 导入失败?

检查以下内容:

  • 文件格式是否为当前页面支持的 CSV 或 JSON,大小是否超过页面提示的 20MB。
  • CSV 是否采用 UTF-8 编码,首行是否与自定义字段匹配。
  • JSON 是否为页面模板要求的记录数组结构。
  • 是否错误携带系统字段。
  • 必填字段是否缺失,数字、布尔和时间值能否转换。
  • 文件中是否含公式注入内容、脚本或非法分隔符。

先使用少量数据在测试环境导入,完成字段映射与预览检查后再处理正式数据。

为什么显示“解析成功”,最终写入数量却不对?

解析成功只说明文件可以读取,不代表每行都满足表结构。查看数据处理阶段的成功数和失败原因,并核对首行、末行及随机样本。重复业务键、必填缺失、类型转换失败和超长文本都可能导致部分记录没有写入。

是否支持导出和备份?

详情页支持导出 CSV。勾选记录时导出选中行,未勾选时需要确认实际导出范围。重要结构变更、线上导入、批量更新和删除前都应先导出备份,并验证文件能够正确打开和解析。

导出文件仍受原数据权限和保留规则约束,不要发送到公共网盘或群聊。

清空或删除后能恢复吗?

页面明确提示“清空测试数据”不可恢复;数据库和线上记录也没有明确回收站入口时,应按不可直接恢复处理。执行前导出备份,高风险业务优先通过 statusdeleted_at 实现软删除。

工作流与自定义 SQL

为什么查询节点没有返回数据?

按以下顺序检查:

  1. 数据库资源和表结构是否正确。
  2. 测试/线上环境、渠道和最终用户是否匹配。
  3. 查询条件的字段类型、空值以及“且/或”关系是否正确。
  4. 查询字段是否实际存在并已保存。
  5. 排序字段和查询上限是否符合预期。
  6. 当前运行的是否为最新保存、发布的工作流版本。

为什么更新或删除影响了多条记录?

更新或删除条件不唯一,或“且/或”关系扩大了范围。立即停止后续写入,记录节点版本、条件、输入和影响行数;从备份或业务来源恢复后,改用记录 id 或唯一业务键定位。

建议在写操作前先查询:0 条时停止,1 条时执行,大于 1 条时要求确认或进入异常分支。

为什么自定义 SQL 有结果,outputList 里却没有对应字段?

outputList 中的变量名需要与 SQL 返回字段名或别名一致。避免 SELECT *,显式选择需要的字段并设置稳定别名;修改 SQL 后同步更新节点输出结构。

为什么自定义 SQL 调试结果和线上结果不同?

先确认调试和线上是否使用不同数据环境、用户或渠道,再比较 SQL 输入变量。聚合查询对数据量、空值和时间范围敏感,测试样本与线上真实数据不同会产生不同结果。

GROUP_CONCAT 或大文本结果为什么不完整?

数据库引擎和运行服务会限制单字段、聚合结果和节点返回规模,具体值可能随当前版本变化。不要依赖旧文档中写死的长度作为现行承诺。需要拼接大量结果时,先用 SQL 查询必要行,再在代码节点中受控处理,并设置数量与长度上限。

为什么查询条数少于预期?

检查查询节点或 SQL 的返回上限、筛选条件和去重配置。当前节点界面提示单次查询最多 1000 条,但正式流程应使用更小、明确的上限;需要遍历大量数据时,应采用分页或批处理,而不是一次把整表交给模型。

快速排查清单

遇到“有数据但查不到”时,依次记录并核对:

text
工作空间
→ 数据库资源 ID
→ 测试数据 / 线上数据
→ 调用渠道
→ 渠道隔离或共享模式
→ 最终用户 ID
→ 工作流版本
→ 查询条件与字段类型
→ 返回上限和输出字段

相关说明: