29. Migrations: Schema Evolution
Безопасная эволюция схемы базы данных.
Типы миграций
Заголовок раздела «Типы миграций»1. Up/Down migrations
Заголовок раздела «1. Up/Down migrations»-- migrations/001_create_users.up.sqlCREATE TABLE users ( id SERIAL PRIMARY KEY, email VARCHAR(200) UNIQUE NOT NULL);
-- migrations/001_create_users.down.sqlDROP TABLE users;2. Versioned migrations
Заголовок раздела «2. Versioned migrations»npx prisma migrate dev --name add_usersПравила безопасных миграций
Заголовок раздела «Правила безопасных миграций»✅ Безопасные:
- ADD COLUMN (с DEFAULT)
- CREATE INDEX CONCURRENTLY
- ADD CONSTRAINT (NOT VALID)
❌ Опасные:
- DROP COLUMN
- ALTER COLUMN TYPE
- ADD COLUMN NOT NULL (без DEFAULT)
Пример: добавление NOT NULL
Заголовок раздела «Пример: добавление NOT NULL»-- ❌ Опасно (блокирует таблицу!)ALTER TABLE users ADD COLUMN name VARCHAR(100) NOT NULL;
-- ✅ Безопасно (поэтапно)-- 1. Добавить nullableALTER TABLE users ADD COLUMN name VARCHAR(100);
-- 2. Заполнить даннымиUPDATE users SET name = 'Unknown' WHERE name IS NULL;
-- 3. Добавить constraintALTER TABLE users ALTER COLUMN name SET NOT NULL;Следующий урок: Zero-Downtime Deployments →