Database Connections and Migrations Guide
Database URLs in Supabase
We use two different database connection URLs for different purposes:
1. Pooled Connection (DATABASE_URL)
postgresql://postgres.ltenyoiaydemsnrvdbpc:[PASSWORD]@aws-1-ap-south-1.pooler.supabase.com:6543/postgres?pgbouncer=true
Used for: - Regular application queries - Normal CRUD operations - High-concurrency operations - Production environment
Why: - Manages connection pooling efficiently - Better handles multiple simultaneous connections - Prevents database connection exhaustion - Optimal for serverless environments
2. Direct Connection (DIRECT_URL)
Used for: - Database migrations - Schema changes - Prisma Studio - Development tools
Why: - Bypasses connection pooling - Required for operations that need direct database access - Necessary for schema migrations - Supports long-lived connections
Database Migration Commands
1. Create a New Migration
- Creates a new migration file - Applies the migration to your database - Regenerates Prisma Client2. Reset Database (Development Only)
- Drops all tables and data - Reapplies all migrations - Seeds the database (if configured)3. Apply Migrations (Production)
- Applies pending migrations - Safe for production use - Doesn't reset or modify existing data4. View Database in Prisma Studio
- Opens web interface at http://localhost:5555 - Uses DIRECT_URL connection - Great for data visualization and managementCommon Issues and Solutions
- Connection Pooling Errors
-
If you see "Too many connections" error, ensure you're using the pooled URL for app queries
-
Migration Failures
- Always use DIRECT_URL for migrations
- Reset database if in development
-
Check foreign key constraints
-
Prisma Studio Connection Issues
- Verify DIRECT_URL is correctly configured
- Check if database is accessible
- Ensure proper permissions
Environment Setup
-
Create
.env
file with both URLs: -
Update
schema.prisma
:
Best Practices
- Version Control
- Commit migration files
- Don't commit
.env
files -
Maintain
.env.example
-
Development Workflow
- Use
migrate dev
during development - Test migrations locally first
-
Keep migrations small and focused
-
Production Deployments
- Always backup before migrations
- Use
migrate deploy
in production -
Never use
reset
in production -
Connection Management
- Use pooled connections for regular operations
- Use direct connections for admin tasks
- Monitor connection limits
Troubleshooting
If you encounter issues:
- Check connection strings
- Verify database permissions
- Ensure proper environment variables
- Review migration history
- Check Prisma logs
For more detailed information: - Prisma Migrations - Supabase Connection Pooling - Database Connection Issues