Руководство по использованию Migration Tool 0.3.1 (далее mtool)
Перед началом работы с mtool необходимо его скофигурировать, используя команду:
php mtool config
Доступные параметры:
- настройка бд
- adapter - адаптер бд, может принимать значения: "mysql"(по-умолчанию), "pgsql";
- host - хост бд, может принимать любые значения;
- username - пользователь бд, может принимать любые значения;
- password - пароль пользователя бд, может принимать любые значения;
- dbname - имя бд, может принимать любые значения;
- charset - кодировка соединения с бд, значение по-умолчанию: "utf8" (в данный момент параметр не используется);
- настройка путей
- path - путь для хранения файлов миграций и снепшотов, может принимать любые значения, по-умолчанию: "../migrations/";
- доп. настройки
- table - таблица в бд хранящая имена примененных миграций, может принимать любые значения, по-умолчанию: "~migrations".
Для создания новой миграции необходимо вызвать команду:
php mtool create XXX
где XXX - номер версии в числовом варианте.
в результате чего будет создан каталог указанный в настройках (если он не был создан заранее) и два файла миграции:
XXX_********_******_**_down.sql
XXX_********_******_**_up.sql
где XXX_********_******_**
- имя миграции, соответствующее её версии и времени создания.
После того, как созданные в п.2 файлы, были заполнены запросами, миграцию можно применить используя команду upgrade
:
php mtool upgrade
# or alias
php mtool up
Если количество не примененных миграций больше одной, то при вызове команды
php mtool upgrade
будут применены все не примененные миграции.
Для отмены миграции необходимо использовать комманду downgrade
:
php mtool downgrade
# or alias
php mtool down
Если количество примененных миграций больше одной, то вызов команды
php mtool downgrade
отменит только последнюю примененную миграцию.
Можно указывать для команд применения/отмены миграций параметр -v XXX
, где XXX - номер версии.
При этом применение/отмена миграций будет происходить только в рамках миграций для текущей весии.
!!! Будьте внимательны, если отменяете миграции предыдущих версий, и в применённых миграциях следующих версий используются те же таблицы - тогда возможны конфликты по этим таблицам в будущем !!!
Допустимо использование команд применения/отмены миграций с параметром (имя миграции вида XXX_********_******_**
).
Например, существуют такие миграции:
00000000_000000_10[+],
00000000_000000_20[+],
00000000_000000_30[-],
00000000_000000_40[-],
00000000_000000_50[-];
Примечание: "+" - примененная миграция, "-" - не примененная миграция
php mtool upgrade
- будут применены миграции: 00000000_000000_30, 00000000_000000_40, 00000000_000000_50;
php mtool upgrade 00000000_000000_40
- будут применены миграции: 00000000_000000_30, 00000000_000000_40;
php mtool downgrade
- будут отменены миграции: 00000000_000000_20;
php mtool downgrade 00000000_000000_10
- будут отменены миграции: 00000000_000000_20, 00000000_000000_10;
!!! При этом миграции будут применяться и отменяться все предыдущие или последующие, вне зависимости от версий
Для команды применения миграций можно указать параметр -u XXX_********_******_**
, где XXX_********_******_**
- номер конкретной миграции.
При этом будет применена только одна эта миграция, где бы она не находилась.
Для получения имени текущей миграции команда:
php mtool current
Для получения списка миграций команда:
php mtool list
данная команда выводит подсвеченый разными цветами список миграций.
Используются такие цвета:
- голубой - миграция не применена и доступна в файловой системе;
- зеленый - миграция применена и доступна в файловой системе;
- красный - миграция применена, но не доступна в файловой системе.
Для создания снепшота текущего состояния бд команда:
php mtool snapshot
в результате данной команды будет создан файл снепшота - ********_******_**_snapshot.sql
, где ********_******_**
- имя снепшота, соответствующее времени его создания.
При создании снепшотов используются внешние приложения: для mysql - mysqldump, для pgsql - pg_dump.
Для применения снепшота необходимо воспользоваться командой:
php mtool deploy
будет вызван диалог со списком доступных снепшотов и возможностью выбрать один из них для применения.
Также существуют такие варианты использования данной команды:
php mtool deploy last
будет применен последний созданный снепшот
php mtool deploy ********_******_**
будет применен выбранный снепшот
Для получения короткой справочной информации:
php mtool help