Реконструкция миграций из существующей базы данных

Базы данных Настройка Разработка Связи

Автор: ACym.ru - November 22, 2016 10:47 am

Есть база данных и нет миграций? Есть решение!

Начать работать с миграциями никогда не поздно.

Если вы начинали программировать приложение в одиночку, а потом к вам подключились другие разработчики, или вы получили в наследство Веб-приложение, и все, что у вас есть - это дамп базы, то сразу возникает вопрос - а можно ли создать на основе существующей базы данных миграции, чтобы в дальнейшем уже работать с миграциями, а не с дампами базы?

Вручную это сделать можно, но потребует значительных усилий.

Есть способ конвертировать существующую базу в миграции автоматически.

Для этого можно использовать плагин экспорта из MYSQL Workbench, представленный по этой ссылке на Гитхабе.

Установить его очень просто:

в MySQL Workbench нужно найти пункт меню Scripting, и выбрать строку Plugin/Module

В открывшемся диалоге необходимо указать путь до файла export-laravel-5-migrations.py из скачанного с Гитхаба плагина.

Теперь перезапустите MySQL Workbench, и можете приступать.

На главной странице MySQL Workbench в левом нижнем углу (речь здесь идет про последнюю на момент публикации версию Workbench номер 6.3, т.е. 6-й ветки) найти указывающую вправо стрелку, и из выпадающего списка выбрать строку Create EER Model from Database.

Если соединение MySQL Workbench с сервером баз данных у вас настроено, то на нескольких последующих экранах все, что вам потребуется, это нажимать на кнопку Продолжить (Continue).

Если вы не настроили MySQL Workbench на автоматическое подключение к серверу баз данных, то просто введите дополнительную информацию (сервер, с которым вы работаете, пароль, и т.д.).

В результате выполнения описанных операций, у вас в MySQL Workbench откроется окно под названием EER Diagram, то есть визуальное представление таблиц вашей базы со связями между ними.

Естественно, здесь можно поработать с базой, и внести в нее необходимые изменения, или поправить связи.

Тем не менее, нас интересовал экспорт существующей базы в миграции, и выполнить это очень просто.

Находясь в диаграмме EER Diagram, перейдите к пункту меню Scripting, найдите строку Catalog, и из выпадающего списка - строку Export Laravel 5 Migration.

После этого необходимо зайти на сайт LaraNotes.ru, и разместить там пару своих коронных приемчиков по работа с фрэймворком Ларавель, чтобы осталось на память, и поделиться ими с соратниками.

Шучу, делать это вас никто не заставляет, но если вы оставите на LaraNotes.ru свои заметки по работе с фрэймворком Ларавель, то в дальнейшем все (и вы в том числе) только выиграют.

Итак, перейдя к пункту меню Export Laravel 5 Migration, вы получите окно, в котором будут представлены все миграции интересующей вас базы данных.

Эти миграции можно сохранить на диск, воспользовавшись кнопкой Save Migration(s) to Folder...

Вот, собственно, и все.

Дальше вы сможете работать уже не с дампами базы, а с нормальными миграциями.

Можете комиттить!

Всем удачного кодинга, и, пользуясь случаем, приглашаю оставлять свои заметки по работе с фрэймворком Ларавель на сайте LaraNotes.ru.

Ваш Андрей Кимвр

.

P.S. Возможно, стоит уточнить, что если вы работаете с базой InnoDB, то получите все нужные вам связи между таблицами. А если база старая, и связей нет, то перед экспортом стоит, наверное, их прописать в MySQL Workbench. И все будет чисто и красиво.