2.1 KiB
2.1 KiB
工程需求
功能需求
schema:baseline不得调用本机mysql、mysqldump或其他外部数据库客户端。- 根工作区直接声明并使用固定版本的
mysql2,不得从 Server 私有依赖路径加载。 - 工具只允许 development、
a_share_analysis_dev、固定开发主机白名单、MySQL 5.7.x、utf8mb4和utf8mb4_general_ci。 - 使用
SHOW CREATE导出基础表、视图、触发器、存储过程、函数和事件;索引与外键随表定义保存。 - 视图按库内依赖拓扑排序;循环依赖、未知依赖或对象丢失必须失败。
- format v3 清单记录导出器和驱动信息;format v1/v2 继续只读验证。
- 空库仍生成
captured_empty,MySQL 未启用仍生成not_applicable,两者不得创建伪造 SQL。 - 版本目录继续使用临时目录、完整校验后原子重命名,既有目录只允许逐字节幂等复用。
安全需求
- 禁止查询业务表数据,禁止 DDL、DML、多语句、锁表和生产探测。
- 密码只能从被 Git 忽略的 development 配置读取,不进入异常、日志、清单、SQL 或命令参数。
- 顶层数据语句、连接串、疑似凭据、残留
DEFINER和环境主机信息必须被拒绝。 - 对象名只能来自已验证的元数据,并使用 MySQL 标识符转义。
- 连接必须在所有成功和失败路径关闭。
性能与稳定性需求
- 使用单连接和有限并发,设置连接超时、查询超时、对象数量和响应大小保护。
- 中小型开发库目标在 30 秒内完成;超时不得保存部分基线。
- 导出前后读取对象摘要,两次不一致时失败,避免并发 DDL 形成混合快照。
- 相同输入必须生成确定性顺序、换行、清单和校验值。
兼容与测试需求
- 外部命令名称和参数保持不变。
- 现有 format v1/v2 夹具、状态和错误边界继续通过。
- 新增假连接单元测试,不以真实数据库作为普通测试门禁。
- 实施完成后只对固定开发库执行一次真实
captured_empty或captured验证,禁止访问生产环境。