Миграции
Миграции — версионируемые изменения схемы. ide99 не заменяет ваш миграционный фреймворк (flyway, migrate, sqlx, prisma, alembic), но даёт UI для просмотра, применения и отката, если вы храните миграции как .sql-файлы в репозитории.
Открыть
В шапке табов: выпадающее меню + New tab → Migrations. Откроется панель с двумя секциями: Files (файлы из директории миграций) и Applied (что уже применено в текущей базе).
Подключить директорию миграций
При первом открытии миграций ide99 спросит путь к директории с .sql-файлами:
~/projects/my-app/db/migrations/
Поддерживаются конвенции:
- Sequential:
001_init.sql, 002_add_orders.sql, ...
- Timestamp:
20260301120000_init.sql, 20260315090000_add_orders.sql, ...
- Up/Down пары:
001_init.up.sql + 001_init.down.sql
Конвенция определяется автоматически по первому файлу.
Сравнение с базой
ide99 сверяет файлы из директории с таблицей, в которой ваш фреймворк хранит применённые миграции:
| Фреймворк |
Таблица |
flyway |
flyway_schema_history |
migrate (golang-migrate) |
schema_migrations |
sqlx (Rust) |
_sqlx_migrations |
prisma |
_prisma_migrations |
alembic |
alembic_version |
node-pg-migrate |
pgmigrations |
Если вашего фреймворка нет в списке — укажите имя таблицы вручную в Settings → Migrations table name.
После сравнения каждый файл получает статус:
- ✓ Applied — есть в базе и в директории
- ↓ Pending — есть в директории, нет в базе
- ⚠ Missing — есть в базе, нет в директории (опасно — кто-то удалил файл?)
- ✕ Mismatch — checksum в базе не совпадает с файлом (файл изменён после применения)
Применить pending
Кнопка Apply pending запустит все ↓-миграции по порядку. Перед каждой:
- Покажет SQL в превью
- Запустит в транзакции (если файл не содержит
CREATE INDEX CONCURRENTLY или подобного — такие команды не транзакционны)
- При ошибке остановится, откатит транзакцию, покажет ошибку
На prod: каждая миграция требует подтверждение через ввод имени файла.
Откат
Если есть .down.sql — кнопка Rollback на applied-миграции выполнит down-скрипт.
Откат на prod опасен. ide99 потребует тройное подтверждение: ввод имени миграции, чекбокс «Я понимаю последствия», кнопка с задержкой в 3 секунды.
История миграций
Таб Applied показывает таблицу:
| When |
Migration |
Checksum |
Duration |
Applied by |
| 2026-05-22 12:13 |
001_init.sql |
a1b2c3 |
142 ms |
migrate |
| ... |
... |
... |
... |
... |
Если поле applied_by есть в таблице фреймворка — оно показывается. Полезно для аудита.
Создать новую миграцию
Кнопка + New migration:
- Name — короткое описание (
add_users_email_index)
- Type — Up / Up+Down пары
- ide99 сгенерирует имя по конвенции директории, откроет пустой файл в редакторе
Файл сохраняется в директорию миграций. Дальше — пишете SQL и Apply.
Что не делает
- Не запускает миграции в CI — это работа вашего фреймворка. ide99 — только UI поверх той же таблицы.
- Не управляет ветками — миграции линейные. Конфликты при merge решаются обычно: или переименовать файл, или сделать новую миграцию поверх.
Что дальше
- Object Editor — создать объект через форму, потом скопировать DDL в миграцию.
- Бэкапы — сделать
pg_dump --schema-only для аудита состояния БД до миграции.