| name | database-migration |
| description | Manage database schema migrations with Flyway, Alembic, Prisma, Knex, and raw SQL migration patterns. |
| metadata | {"thinkfleetbot":{"emoji":"🔄","requires":{"anyBins":["flyway","alembic","npx","psql","mysql"]}}} |
Database Migration
Manage schema changes with versioned, repeatable migrations.
Prisma (Node.js)
npx prisma migrate dev --name add_users_table
npx prisma migrate deploy
npx prisma migrate reset
npx prisma migrate status
npx prisma generate
npx prisma db pull
Knex (Node.js)
npx knex migrate:make add_users_table
npx knex migrate:latest
npx knex migrate:rollback
npx knex migrate:rollback --all
npx knex migrate:status
npx knex seed:make seed_users
npx knex seed:run
Alembic (Python/SQLAlchemy)
alembic init alembic
alembic revision --autogenerate -m "add users table"
alembic upgrade head
alembic downgrade -1
alembic current
alembic history --verbose
alembic upgrade head --sql > migration.sql
Flyway (Java/multi-language)
flyway migrate
flyway info
flyway validate
flyway undo
flyway clean
flyway baseline
Raw SQL Migrations
psql $DATABASE_URL -f migrations/001_create_users.sql
mysql -u $DB_USER -p$DB_PASS $DB_NAME < migrations/001_create_users.sql
psql $DATABASE_URL -c "CREATE TABLE IF NOT EXISTS schema_migrations (version TEXT PRIMARY KEY, applied_at TIMESTAMPTZ DEFAULT NOW());"
psql $DATABASE_URL -c "INSERT INTO schema_migrations (version) VALUES ('001_create_users');"
Schema Diffing
npx prisma migrate diff --from-schema-datasource prisma/schema.prisma --to-schema-datamodel prisma/schema.prisma
pg_dump --schema-only $DATABASE_URL > schema_current.sql
diff schema_previous.sql schema_current.sql
Notes
- Always test migrations on a copy of production data before applying.
- Migrations should be idempotent where possible (
IF NOT EXISTS, IF EXISTS).
- Never edit an already-applied migration. Create a new one.
- For zero-downtime deployments: add columns as nullable first, backfill, then add constraints.
- Back up the database before running migrations in production.