====== Пакет Migrate ====== :!: Пакет находится в инкубаторе. Для использования его полного функционала необходимо перенести содержимое папки migrate в папку с пакетами limb. Пакет представляет из себя систему контроля версий SQL Баз Данных. Новые изменения Базы Данных сохраняются в файлы (миграции) в виде SQL запросов ALTER/CREATE. В связке с проектом пакет удобно использовать по средствам утилиты [[limb3:ru:packages:taskman:limb.php|limb.php]] ===== Задачи пакета Migrate ===== ^Тег^Описание^Зависимости^ |||Расположение: **limb/migrate/cli/migrate.inc.php** ||| | **migrate_init_config** | Init project config. Creates migrate.conf.php in project/settings dir. By default:\\ **DSN**: used project db.conf.php\\ **Schema**: project_dir/init/migrate/schema.sql\\ **Data**: project_dir/init/migrate/data.sql\\ **Migrations**: project_dir/init/migrate/migrations/ | | | **migrate_init** | Init project migration: create dump files and sets version 1 | migrate_init_config | | **migrate_dump_all** | Dump schema and data | migrate_init_config | | **migrate_dump_schema** | Dump schema | migrate_init_config | | **migrate_dump_data** | Dump data | migrate_init_config | | **migrate_load_all** | Load schema and data | migrate_init_config | | **migrate_create** | Create new migration file (using diff) | migrate_init_config | | **migrate_run** | Apply new migration file(s) | migrate_init_config | | **migrate_dryrun** | Test new migration file(s) | migrate_init_config | ===== Workflow системы миграций ===== ==== 1. Инициализация ==== Для начала вам необходимо инициализировать систему миграций: limb.php migrate_init Процедура создаст в вашей БД таблицу schema_info содержащую одну единственную запись с номером версии схемы. И сохранит начальные дампы по путям указаным в конфиге settings/migrate.conf.php (если отсутствует, - то создается автоматически запускаемой процедурой migrate_init_config) ==== 2. Создание миграции ==== Теперь, если новый код вашего проекта требует изменения базы данных, вы можете вносить изменения в вашу локальную БД (сервер разработки). Когда код и новая схема БД отлажены вам необходимо создать новую миграцию: limb.php migrate_create Система спросит у вас имя миграции в интерактивном режиме. Будет создан файл с SQL кодом миграции и именем файла в формате <номер_версии>_<имя_миграции>.sql . Соответственно имя миграции должно соответствовать правилам именования файлов вашей ФС. Идентификатор версии схемы БД будет обновлен до версии вашей новой миграции. **До** создания файла миграции можно посмотреть что будет включено в его содержимое по средствам процедуры diff: limb.php migrate_diff Когда файл миграции создан вы можете включить его в состав коммита с кодом работающим с этой версией БД. ==== 3. Применение миграции ==== Другой разработчик получив из репозитория вашу новую версию проекта (вместе с файлом миграции) должен применить её при помощи процедуры run. limb.php migrate_run Процедура применяет все миграции версии которых "свежее" установленной в данный момент схемы. Вы можете запустить процедуру применения новой миграции "в сухую".: limb.php migrate_dryrun В этом случае процедура создаст временную БД с схемой вашей БД, попытается применить к ней новые миграции и сообщит о возможных ошибках.