Миграции и git

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
germanow
Сообщения: 8
Зарегистрирован: 2017.04.24, 09:50
Откуда: Украина

Миграции и git

Сообщение germanow » 2017.04.28, 16:38

Есть вопрос по поводу использования миграций и веток в git. Насколько я понял миграции существую, чтобы связать состояние кода с состоянием базы данных.
Допустим у меня есть основная ветка со своими миграциями и соответственно таблицами в базе данных. Я создаю новую ветку для экспериментов и создаю там свои миграции и применяю их к базе. В какой-то момент мне захочется вернуться в основную ветку. Я перехожу но база данных то остаётся, yii migrate будет говорить что все в порядке. В таком случае как поступают правильно? Удаляют все таблицы и создают заново из миграций находящихся в конкретной ветке? То есть придется при каждом переключении пересоздавать базу. Я уже молчу про слияние веток с разными миграциями. В интернете не нашел полного ответа, может подскажете статью на эту тему.

sosnovskiy
Сообщения: 239
Зарегистрирован: 2017.03.28, 20:03

Re: Миграции и git

Сообщение sosnovskiy » 2017.04.28, 16:44

Как вариант перед git checkout делать migrate/down до нужного состояния. Но это только если у вас во всех миграциях есть down и он не возвращает false

Аватара пользователя
chungachguk
Сообщения: 394
Зарегистрирован: 2012.07.17, 11:52

Re: Миграции и git

Сообщение chungachguk » 2017.04.29, 06:27

Как вариант попробуй в настройках подключения указывать разный префикс БД для разных веток, а при запуске миграции указывать разные таблицы миграции.

germanow
Сообщения: 8
Зарегистрирован: 2017.04.24, 09:50
Откуда: Украина

Re: Миграции и git

Сообщение germanow » 2017.04.29, 10:04

Все это похоже на полумеры. Хотелось бы чтоб yii migrate понимал, что в таблице migrations больше миграций чем в папке migrations и само пересоздавало базу, конечно по умолчанию такое поведение выглядит стремным, но если б был какой-то флаг.

sosnovskiy
Сообщения: 239
Зарегистрирован: 2017.03.28, 20:03

Re: Миграции и git

Сообщение sosnovskiy » 2017.04.29, 14:13

Это можно самому легко реализовать. Сделать проверку на соответсвие фалов и бд. И в случае если в бд записей больше, делать migrate down

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Миграции и git

Сообщение zelenin » 2017.04.29, 16:14

откат миграций намного сложнее чем их накатывание. Не всегда можно миграцию откатить. Это данность. Приходится просто заново раскатывать дамп базы.

Аватара пользователя
ElisDN
Сообщения: 5110
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Миграции и git

Сообщение ElisDN » 2017.04.29, 18:25

sosnovskiy писал(а):
2017.04.29, 14:13
Это можно самому легко реализовать. Сделать проверку на соответсвие фалов и бд. И в случае если в бд записей больше, делать migrate down
И как сделаете down пяти миграций из бд, когда в папке лежат только первые два файла?

sosnovskiy
Сообщения: 239
Зарегистрирован: 2017.03.28, 20:03

Re: Миграции и git

Сообщение sosnovskiy » 2017.05.02, 10:13

Очевидно что никак. Моя идея не состоятельна

germanow
Сообщения: 8
Зарегистрирован: 2017.04.24, 09:50
Откуда: Украина

Re: Миграции и git

Сообщение germanow » 2017.05.06, 10:49

Тему можно закрывать. Как я понял, нету какого-то правильного решения. Из возможных вариантов можно отметить:
- отдельная бд для ветки
- делать дамп бд перед сменой ветки
- удалять бд и создавать заново из миграций

Ответить