Squawk PostgreSQL 迁移 Lint 检查
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 安装 @user_3c6cb52e/lint-postgresql-migrations-and-sql-changes-before-irreversible-schema-mistakes-land-with-squawk
技能介绍
迁移审查的盲区
大多数数据库事故不是写错了一行 SQL,而是一条看似无害的 ALTER TABLE 在生产环境静默生效。给 varchar 字段改长度可能触发 ACCESS EXCLUSIVE 锁,整个表的读写被瞬间冻结;在错误的时机建索引会拖垮高峰期负载;列类型变更、外键删除这类操作一旦执行,回滚成本极高。代码评审只关心逻辑对不对,没人会逐行核对每条 DDL 在锁行为上的代价。
Squawk 如何工作
这个技能把 Squawk 接入你的迁移流程,对 PostgreSQL 迁移文件和 SQL 变更做静态 Lint:
- 规则驱动分析:内置一组针对 DDL 的规则,覆盖锁竞争、索引策略、字段变更等高危模式,对每条迁移 SQL 给出
warning或错误标记; - 逐条迁移扫描:直接读取项目中的 SQL 文件,逐条识别风险操作并输出可操作的诊断信息,例如指出某次
varchar长度变更会阻塞全表读写; - 灵活集成:可以走 CLI、Docker 镜像,也能接入 CI 或 pre-commit 钩子,让检查发生在代码合入之前。
适用边界
Squawk 是静态规则检查器,不是执行计划分析工具:它无法感知你的表实际数据量、负载曲线和锁等待情况,误报和漏报都可能存在,高危操作仍需人工判断。规则集是通用的,业务特定的约束需要自己补充或忽略。它只覆盖 PostgreSQL 方言,其他数据库的迁移文件不在范围内。把它当作迁移评审的第一道筛子,而不是替代品。
使用场景
- 准备提交 PostgreSQL 迁移 PR 前,本地跑一遍 Lint,确认改动不包含会锁全表的 DDL
- 在 CI 流水线里增加一道迁移 SQL 检查,防止其他同事的 PR 带入 ACCESS EXCLUSIVE 锁
- 评审生产大表变更方案时,用规则扫描逐条核对索引创建和字段变更的锁风险
- 为仓库配置 pre-commit 钩子,在提交前自动拦截危险的模式变更语句
适合人员
- 经常改动 PostgreSQL 表结构的后端工程师,需要在发版前确认迁移安全
- 负责生产库变更评审的 DBA,要把锁竞争和不可逆 DDL 挡在上线前
- 搭建 CI 流水线的平台工程师,想给数据库变更加一道自动化检查