Skip to content

--database-driver mysql--database-driver sqlite-wasm 在 flag 解析阶段被拒 —— oclif 的 options 白名单漏了两个能用的驱动 #6860

Description

@os-project-manager

#6345 的 fork 3 拆出(维护者 2026-08-09 裁定拆卡先修)。这是现活的用户可见缺陷,不是文档滞后 —— #6345 原文把它记成「help 文案漏项」,实测推翻了这个定性。

事实(由 #6345 的实施 agent 实测)

--database-driverpackages/cli/src/commands/start.tsdev.ts 上是 oclif 的 options: 强制白名单,不是自由文本加一段 help 描述。白名单当前是:

sqlite | turso | postgres | mongodb | memory

漏了 mysqlsqlite-wasm —— 两者都是能正常工作的驱动(packages/cli/src/utils/storage-driver.tsresolveStorageDefinition 认得它们,OS_DATABASE_DRIVER 环境变量路径也认)。

后果:os start --database-driver mysqlos dev --database-driver sqlite-wasm 在参数解析阶段就被 oclif 拒掉,连命令体都进不去。操作者拿到的是 oclif 的通用「expected one of」错误,而不是任何来自本仓的解释。同一个驱动改用 OS_DATABASE_DRIVER=mysql 却能用 —— 同一件事,两个答案。

文档面同样漏

  • content/docs/deployment/cli.mdx(两处表格)与白名单同样漏项;
  • content/docs/deployment/environment-variables.mdx 列的是全集(含 mysql)。

三份清单,三种答案 —— 这是 #6345 记录的原始症状,但根因在白名单而非文案。

处置

窄修:把两个缺失项补进两处 options: 白名单,并把两处文档表格对齐到实际接受的集合。

⚠️ #6345 主体的关系:#6345 的裁定是让白名单将来由共享别名表推导,届时本卡补的这几行会被重构掉。这是明知并接受的返工 —— 维护者的原话是「两个驱动今天用不了」的代价更高。本卡不做任何词表收敛,不碰 packages/spec,不碰 standalone-stack.ts

验收要点

  • 钉住 --database-driver 的白名单与 resolveStorageDefinition 实际接受的集合一致(这条不一致正是本缺陷);
  • 两条命令(start / dev)都要覆盖 —— 白名单在两处各写了一份;
  • 前提复现:改动前 os start --database-driver mysql 被 oclif 拒;改动后进入命令体并按 mysql 解析。

Refs #6345(来源与裁定存档)。

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions