sqldef 数据库模式漂移对比
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/diff-live-database-schemas-against-declarative-sql-before-schema-drift-reaches-production-with-sqldef。
技能介绍
要解决什么问题
团队用声明式 SQL 管理 schema,但仓库文件和线上结构会慢慢分叉:生产上有人直接执行了 DDL,有人改了表忘了回写,迁移脚本也可能只跑了一半。
这些差异会带来实际故障:发布时 SQL 语句报错,回滚时发现字段已不存在;AI agent 直接操作数据库时,读到的文档和线上结构不一致,可能在最不希望的地方触发变更。
技能如何工作
这个技能把 sqldef 作为漂移检查的执行层:
- 以声明式 SQL 为基准:
CREATE TABLE等语句既是 schema 定义,也是期望状态描述。 - 对比实时数据库:
mysqldef、psqldef、sqlite3def、mssqldef分别对应一种数据库,连接选项与原生客户端一致,可复用现有配置。 - 生成可审查的执行计划:输出「让线上结构变成期望状态所需的语句」,而不是直接修改数据库。
- 先评审后执行:计划进入正常 review 流程,确认后再由人工或 agent 执行。
四种数据库共用一套工作流,只有连接参数不同,因此可以用同一套检查脚本覆盖多个引擎。
适用边界
sqldef 围绕声明式 SQL 设计,要求仓库中的 SQL 与期望 schema 保持一致。它不做迁移版本管理,也不自动阻止破坏性变更:DROP TABLE 之类的语句会原样出现在计划里,需要评审者自己判断。生成计划需要读取目标库元数据的权限,建议在只读副本上运行检查。当前没有 Debian 包,环境要求需要提前确认。
使用场景
- 团队提交SQL变更后,需在合并前对比线上结构并生成可审查的执行计划。
- AI agent准备操作生产数据库前,需确认线上schema与仓库中的声明式SQL一致。
- DBA收到一份待执行的schema变更,需先审查生成的apply plan是否安全。
- 迁移脚本中途失败后,需检查线上结构与仓库SQL的差异范围。
适合人员
- 后端工程师,需要在合并SQL变更前确认不会引入schema漂移。
- DevOps工程师,需要在CI流水线中集成schema差异检查作为质量门禁。
- AI agent开发者,需要在agent直接操作数据库前验证schema一致性。
- DBA,需要审查并批准即将执行的schema变更计划。