数据库版本管理(通常叫 Database Versioning / Migration Management)是研发和运维中很容易踩坑、但又非常关键的一环。下面从「原则 → 工具 → 实践」三个层面给你一套靠谱的做法。
数据库结构也是代码
变更可追溯、可回滚
环境一致性
禁止直接人工改生产库
核心思想:用“增量脚本”管理数据库版本
| 语言/生态 | 工具 |
|---|---|
| Java | Flyway、Liquibase |
| Node | Sequelize Migrations、TypeORM Migration |
| Python | Alembic(SQLAlchemy) |
| Go | golang-migrate |
| 通用 | Liquibase(跨语言) |
db/
├── V1__init_schema.sql
├── V2__add_user_table.sql
├── V3__add_index.sql
V1, V2 是版本号✅ 优点:清晰、可控、可审计
❌ 缺点:需要规范约束
例如:
model User {
id Int @id @default(autoincrement())
name String
}
✅ 适合业务系统
❌ 复杂迁移(数据迁移)不够灵活
-- 结构变更
ALTER TABLE user ADD age INT;
-- 数据填充
UPDATE user SET age = 18 WHERE age IS NULL;
V3__add_index.sql
V3_rollback__drop_index.sql
❌ 用 Navicat 手动改生产
❌ 多人同时改同一张表,冲突没人发现
❌ 迁移脚本里写死环境数据
❌ 不备份就跑 migration
如果你愿意,可以告诉我:
我可以直接给你一套可落地的版本管理方案 + 目录结构 + CI 示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。