Postgres 迁移安全检查 CLI 工具
推荐指数 65.0 NO. 012 · 2026.09.27
发布2026/09/26Score111Comments38
为什么值得看
safe-not-safe 是一个基于 libpg_query WASM 解析器的命令行工具,能在本地静态分析 Postgres 迁移 SQL 文件,标记潜在危险操作(如锁表、删列)。对需要频繁发版又有线上数据风险的团队,可以在 CI 里加一道自动门禁,避免凌晨回滚。
编辑判断
Postgres 迁移的风险点从来不是语法错误,而是隐式锁表和长时间阻塞。之前大家要么靠人工 review,要么用 Squawk 这类基于 AST 的规则引擎,但配置复杂。这个工具走轻量路线,直接用 libpg_query 的 WASM 版本在浏览器 worker 里跑,意味着未来可能嵌入 Web UI 做实时粘贴检查。
Squawk 用户可以考虑对比下规则覆盖度和误报率,如果这个项目能把规则集做得更贴近真实生产事故(比如没加 CONCURRENTLY 的 CREATE INDEX),会是个更实用的替代。小团队还没上迁移检查流程的,建议从这类零配置工具开始,比直接上大型 schema 治理平台成本低得多。
社区反馈
意见分歧 38 条评论
核心争论:静态规则检查能否覆盖真实迁移风险,还是必须结合运行时锁机制与超时策略
Thing that bit me most wasn't the DDL itself, it was lock queuing. An ADD COLUMN is instant but if it waits behind a long read, every query behind it piles up too. Lock_timeout plus retry saved us more than any clever migration tool.
Agree. `lock_timeout` will go a long way in terms of damage control.
Very cool! I wrote a go library for this https://onwardpg.solberg.is