Skip to content

Небольшой скрипт на php для управления миграциями в проекте. Каждая миграция описывается отдельно каждым членом команды. Новые изменения применяются в базу отдельным запуском скрипта. Поддерживается MySQL и PostgreSQL.

Notifications You must be signed in to change notification settings

deadkrolik/Simple-mysql-DB-migrator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Небольшая консольная утилита для учета изменений в базе данных. Любой запуск 
скрипта это всегда команда вида:

php migrator.php [команды ...]

Для первичного учета изменений базы введено понятие "миграция". Это специальный
файл, лежащий в директории db_changes и описывающий команды для применения и 
отката изменений в случае неудачи их применения. Для создания такого файла 
необходимо выполнить следующую команду:

php migrator.php create "описание миграции"

Само описание это несколько слов об изменениях, на основе этой фразы и текущей 
даты в директории db_changes будет создан файл с классом, унаследованным от класса
Stage и реализующий два метода - up и down. Метод up должен возвращать массив
sql-запросов, подлежащих исполнению в миграции. Массив down должен возвращать
массив точно такой же размерности, в котором содержатся запросы откатывающие
изменения соответствующих запросов метода up, в точно таком же порядке. Если такого
запроса нет, то метод должен возвращать массив такой же размерности из пустых строк.

Таким образом, после генерации файла необходимо его отредактировать, изменив тело
методов up и down.

Пара слов о файлах конфигурации.

Их может быть неограниченное количество и находятся они в директории config. Файл
конфигурации должен содержать две обязательные секции database и options. Секция
database должна содержать реквизиты для соединения с конкретной базой данных MySQL.
Секция options дожна содержать поле table, в котором содержится имя служебной таблицы
для миграций. По умолчанию 'migrations'. Также она может содержать массив для 
замен, например, префиксов таблиц, в следующем виде:

replaces[что_заменяем]="на_что_заменяем"

например:

replaces[#__]="jos_"

Если файл конфигурации не задан в командной строке, то возможны два варианта: если
в каталоге config существует всего один ini-файл, то будет использован он. Если 
их больше, то будет использовано имя по умолчанию - "local".

Для предпросмотра вносимых в базу данных изменений другими файлами миграций 
необходимо выполнить следующую команду:

php migrator.php preview [конфиг]

Имя файла конфига указывается без расширения ini. Например, просто local. Эта
команда просто покажет список файлов и число SQL-запросов, еще не внесенных в 
служебную таблицу. Для реального исполнения запросов надо ввести следующую команду:

php migrator.php up [конфиг]

В случае ошибки исполнения какого-либо запроса она будет выведена, а исполнение
миграций будет прервано. Будет произведена попытка откатить все запросы текущей
миграции, исполненные до текущего.

Для просмотра уже исполненных команд миграции необходимо выполнить команду:

php migrator.php show_executed [конфиг]

WWW каталог - это небольшой скрипт для исполнения в вебе команд миграции, так как
консоль не всегда бывает доступна. Запуск сводится к заполнению двух полей - команды
и пароля. Пароль хранится в файле config/password. Можно класть практически в любое
место, главное что бы оно было не глубже чем 10 вложенных уровней, относительно
всей папки скрипта миграций. Веб-скрипт сам найдет каталог с мигратором, просто
поднимаясь вверх по дереву папок относительно своего начального положения. Именование
папки "web_migrator" может быть любым.

About

Небольшой скрипт на php для управления миграциями в проекте. Каждая миграция описывается отдельно каждым членом команды. Новые изменения применяются в базу отдельным запуском скрипта. Поддерживается MySQL и PostgreSQL.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages