返回顶部
d

database-schema-sync数据库模式同步

Database schema management using idempotent sync script instead of Alembic migrations. Use when (1) Adding new database tables, (2) Adding new columns to existing tables, (3) Modifying database schema, (4) Deploying to production, (5) Syncing schema across environments. REQUIRED APPROACH - ALWAYS use scripts/sync-production-schema.py with --dry-run first, NEVER run Alembic migrations directly in production.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
91
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

database-schema-sync

数据库模式管理

使用模式同步脚本,而非Alembic迁移

首选方案: 智能模式同步脚本,可检测并仅应用缺失的变更。

严格规则

  • * ✅ 始终使用: scripts/sync-production-schema.py 用于生产环境部署
  • 幂等性: 可安全多次运行,不会出错
  • 透明性: 应用前精确显示将要变更的内容
  • 避免: 在生产环境中直接运行Alembic迁移
  • 避免: 使用未进行版本控制的手动SQL脚本
  • ⚠️ 保留: Alembic迁移文件仅用于文档目的

为何选择模式同步脚本?

✅ 优势:

  • * 更简单: 一个脚本替代管理多个迁移文件
  • 更安全: 应用变更前检查现有状态
  • 幂等性: 可多次运行,不会出错
  • 透明性: 应用前显示差异
  • 灵活性: 适用于任何数据库状态(开发、预发布、生产)
  • 无需追踪: 无需管理哪些迁移已执行

❌ Alembic迁移问题:

  • * 运行两次会失败(不具备幂等性)
  • 需要追踪已应用的迁移
  • 全有或全无(无法跳过某个迁移)
  • 复杂的回滚场景
  • 团队协作开销

工作流程

1. 先进行预演运行(始终如此!)

bash

显示将要变更的内容,但不实际应用


python scripts/sync-production-schema.py --dry-run

2. 审查输出

bash

输出显示:


✓ 已存在的表/列(已跳过)


ℹ 将要创建的新表/列


⚠ 任何潜在问题

3. 应用到生产环境

bash

将变更应用到生产数据库


export DATABASE_URL=postgresql://...
python scripts/sync-production-schema.py --apply

4. 验证

bash

连接并验证模式


psql $DATABASE_URL -c \dt # 列出表
psql $DATABASEURL -c \d tablename # 描述表

必需位置

  • * 模式同步脚本: /Users/tobymorning/Desktop/core/scripts/sync-production-schema.py
  • 文档: /Users/tobymorning/Desktop/core/docs/deployment/SCHEMASYNCGUIDE.md
  • Alembic迁移(用于文档): /Users/tobymorning/Desktop/core/src/backend/alembic/versions/

何时更新模式

添加新表

  1. 1. 在 src/backend/app/models/ 中定义模型
  2. 在 scripts/sync-production-schema.py 中添加表创建逻辑
  3. 使用新表信息更新 docs/deployment/SCHEMASYNCGUIDE.md
  4. 先用 --dry-run 测试
  5. 依次应用到开发、预发布和生产环境

添加新列

  1. 1. 更新 src/backend/app/models/ 中的模型
  2. 在同步脚本中添加列检查和ADD COLUMN逻辑
  3. 使用IF NOT EXISTS模式确保安全
  4. 先用 --dry-run 测试
  5. 应用到各环境

内置安全检查

  • * ✅ 创建前检查表是否存在
  • ✅ 添加前检查列是否存在
  • ✅ 事务安全性(出错时回滚)
  • ✅ 预演模式预览变更
  • ✅ 彩色输出便于阅读
  • ✅ 所有已应用变更的摘要

与CI/CD集成

Railway部署:
yaml

在Procfile或部署脚本中


release: python scripts/sync-production-schema.py --apply

GitHub Actions:
yaml

  • - name: 同步生产模式

env:
DATABASEURL: ${{ secrets.DATABASEURL }}
run: python scripts/sync-production-schema.py --apply

强制执行

  • * ❌ 绝不 在生产环境中运行 alembic upgrade head
  • 绝不 在生产环境中不使用同步脚本手动执行SQL
  • 绝不 对生产环境变更跳过预演步骤
  • 始终 使用 scripts/sync-production-schema.py 进行模式变更
  • 始终 在 --apply 之前运行 --dry-run
  • 始终 在生产环境之前在开发/预发布环境中验证变更
  • 始终 在添加新表/列时更新文档

违规后果

  • * 环境间数据库模式漂移
  • 因迁移冲突导致部署失败
  • 因错误迁移导致数据丢失
  • 因模式错误导致生产环境停机
  • 团队对数据库状态产生困惑

这是必需标准。所有数据库变更均使用模式同步脚本。

参考文件

参见 references/sync-vs-alembic.md 了解同步脚本与Alembic迁移的详细对比。

参见 references/workflow-examples.md 获取添加表、列、索引以及处理复杂迁移的代码示例。

运行 scripts/verify-sync-script.sh 验证同步脚本是否存在且配置正确。

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 database-schema-sync-1776058945 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 database-schema-sync-1776058945 技能

通过命令行安装

skillhub install database-schema-sync-1776058945

下载

⬇ 下载 database-schema-sync v1.0.0(免费)

文件大小: 6.73 KB | 发布时间: 2026-4-14 09:46

v1.0.0 最新 2026-4-14 09:46
Initial release of database-schema-sync skill.

- Introduces an idempotent schema sync script approach for database migrations.
- Strongly enforces use of scripts/sync-production-schema.py instead of Alembic migrations in production.
- Provides step-by-step workflow: dry run, review output, apply, and verification.
- Outlines strict usage rules, safety checks, and integration recommendations for CI/CD pipelines.
- Includes documentation and enforcement guidelines to prevent schema drift and production errors.

Archiver·手机版·闲社网·闲社论坛·智能体自动化市场· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2026 闲社网·AI智能体论坛·AI自动化解决方案·http://xianshe.com

p2p_official_large
返回顶部