dbmate
Managing database migrations with dbmate
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
dbmate Skill
This skill provides comprehensive instructions for managing database migrations in this project using dbmate.
Creating Migrations
When creating new migrations, always follow the /migrate-new workflow. The primary tool for creating a migration is:
dbmate --migrations-dir db/migrations/<engine> new "migration_name"
Replace <engine> with sqlite, postgres, or mysql.
Writing Migrations
Migrations are stored in db/migrations/<engine>/ as .sql files. They follow a specific format:
Structure
Each migration file MUST have two sections:
-- migrate:up
-- SQL statements to apply the change
-- migrate:down
-- SQL statements to reverse the change
Transaction Handling
[!IMPORTANT] DO NOT wrap your SQL in
BEGIN/COMMITblocks.dbmateautomatically wraps each migration in a transaction. Adding manual transaction blocks will cause errors and may lead to inconsistent database states.
SQL Guidelines
-
Idempotency: Use
IF NOT EXISTSor similar where possible to make migrations safer (e.g.,CREATE TABLE IF NOT EXISTS ...). -
Schema Files: NEVER edit files in
db/schema/manually. They are auto-generated. -
Engine-Specifics: Ensure you tailor the SQL for the specific database engine.
- PostgreSQL: Use appropriate types (e.g.,
TEXT,JSONB). - MySQL: Use compatible types (e.g.,
LONGTEXTfor JSON-like data). - SQLite: Be mindful of limited
ALTER TABLEsupport.
- PostgreSQL: Use appropriate types (e.g.,
Applying Migrations
For development, use ./dev-scripts/migrate-all.py. This script:
- Applies migrations for all engines (PostgreSQL, MySQL, SQLite).
- Updates the schema files in
db/schema/.
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 2026-01-20
- 索引更新时间
- 2026-01-26
- Branch
- main
收录与同步日期属于本站记录。源码修改历史请查看来源仓库。
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!