Rolling back migrations in Supabase - Time & Space Complexity
When rolling back migrations in Supabase, it's important to understand how the time to undo changes grows as more migrations exist.
We want to know how the rollback process scales with the number of migrations applied.
Analyze the time complexity of rolling back migrations one by one.
// Rollback the last migration
await supabase.migrations.rollback();
// Rollback multiple migrations in a loop
for (let i = 0; i < n; i++) {
await supabase.migrations.rollback();
}
This sequence rolls back the last migration once, or multiple times to undo several migrations in order.
Look at what happens repeatedly during rollback.
- Primary operation: Calling the rollback API to undo one migration.
- How many times: Once per migration being undone.
Each rollback call undoes one migration, so the total calls grow directly with the number of migrations.
| Input Size (n) | Approx. API Calls/Operations |
|---|---|
| 10 | 10 rollback calls |
| 100 | 100 rollback calls |
| 1000 | 1000 rollback calls |
Pattern observation: The number of rollback calls increases one-to-one with the number of migrations to undo.
Time Complexity: O(n)
This means the time to rollback grows linearly with how many migrations you want to undo.
[X] Wrong: "Rolling back multiple migrations happens all at once in a single call."
[OK] Correct: Each rollback call only undoes one migration, so multiple calls are needed for multiple rollbacks.
Understanding how rollback operations scale helps you design reliable deployment processes and troubleshoot database changes confidently.
"What if the rollback command could undo multiple migrations in one call? How would the time complexity change?"
Practice
supabase db rollback do?Solution
Step 1: Understand the purpose of rollback
Rollback means undoing changes, so this command reverses migrations already applied.Step 2: Identify the command effect
supabase db rollbackspecifically undoes the last migration applied to the database.Final Answer:
It undoes the last applied database migration. -> Option BQuick Check:
Rollback = undo last migration [OK]
- Confusing rollback with applying migrations
- Thinking rollback creates new migrations
- Assuming rollback deletes the database
Solution
Step 1: Recall the rollback command syntax
The Supabase CLI uses--stepsto specify how many migrations to rollback.Step 2: Match the correct option
supabase db rollback --steps 3 usessupabase db rollback --steps 3, which is the correct syntax.Final Answer:
supabase db rollback --steps 3 -> Option AQuick Check:
Use --steps to rollback multiple migrations [OK]
- Using incorrect flags like -n instead of --steps
- Wrong command order like 'rollback db'
- Using 'undo' instead of 'rollback'
supabase db pushsupabase db pushsupabase db rollback --steps 1What is the state of migrations after these commands?
Solution
Step 1: Apply two migrations
Runningsupabase db pushtwice applies two migrations in order.Step 2: Rollback one migration
The rollback with--steps 1undoes the last applied migration, leaving the first migration applied.Final Answer:
Only the first migration is applied. -> Option DQuick Check:
Rollback 1 step removes last migration applied [OK]
- Assuming rollback removes all migrations
- Thinking rollback does not affect applied migrations
- Confusing push and rollback order
supabase db rollback --steps 2 but get an error saying no migrations to rollback. What is the most likely cause?Solution
Step 1: Understand rollback error
The error indicates no migrations to rollback, meaning none or fewer than requested are applied.Step 2: Identify cause
If fewer than 2 migrations are applied, trying to rollback 2 steps causes this error.Final Answer:
There are fewer than 2 migrations applied to rollback. -> Option AQuick Check:
Rollback steps > applied migrations causes error [OK]
- Assuming rollback always works without applied migrations
- Thinking rollback needs --force flag
- Ignoring database connection issues
Solution
Step 1: Understand migration order
Migrations apply in order; you cannot rollback a middle migration without undoing later ones first.Step 2: Plan rollback and reapply
Rollback migrations after the 3rd (steps 2), then rollback the 3rd, then reapply the later migrations.Final Answer:
Rollback all migrations from the 3rd onwards, then reapply the ones after it. -> Option CQuick Check:
Rollback middle migration requires undoing later ones first [OK]
- Trying to rollback a single middle migration directly
- Deleting migration files without rollback
- Editing database manually causing inconsistency
Ready to prove it?
Pass the test and this pattern moves unknown
