Дампим БД
Поработав с фреймворком Symfony, я открыл для себя такую интересную вещь, как фикстуры (fixtures). Это тот минимальный набор дефолтных данных, которые должны присутствовать в базе сразу после создания билда проекта. Практически в любом проекте надо с ходу иметь какие-то дефолты:
- настройки
- список стран, языков, валют
- каких-то дефолтовых пользователей
- локализованные тексты
Вне рабочих стен я не использую Symfony, но идея запала в душу. Вот как я ее решил на своем обычном окружении.
Выдрать данные из таблицы MySQL просто: для этого есть тулза mysqldump. Однако дампить все подряд не очень здорово — так в билд попадут всякие девелоперские данные, которые чаще всего представляют собой маты разных языков и строку «qwerty» ;)
Поэтому дампить имеет смысл в два присеста:
- Структура БД (DDL)
- Данные избранных таблиц (DML)
@SET DATABASE=my_project_dev
@SET DUMP_FILE=dump.sql
@SET COMMON_PARAMS=--default-character-set=utf8 -uuser -ppass --disable-keys --quote-names
@rem Define list of tables to load their data (not only metadata), space separated
@SET TABLES=countries languages currencies settings fuseactions
@rem DDL. "--databases" is added to make mysqldump add CREATE DATABASE + USE statements
mysqldump --no-defaults --no-create-info=false --no-data=true --add-drop-table %COMMON_PARAMS% --databases %DATABASE% > %DUMP_FILE%
@rem DML
mysqldump --no-create-info=true --no-data=false --extended-insert %COMMON_PARAMS% %DATABASE% %TABLES% >> %DUMP_FILE%
В первой части задается имя базы, с которой мы имеем дело, а также имя выходного файла.
Затем задаются параметры mysqldump, общие для обоих шагов.
После этого идет список таблиц, из которых нам нужно получить фикстуры.
И уже после этого в два присеста дампим DDL проекта и
Файл, полученный в результате этого опыта, я коммичу в репозиторий своего проекта, так что скрипт сборки билда использует этот файл для создания БД. Таким образом очень здорово отслеживаются изменения в структуре базы.
P.S. Да, batch-файл я запускаю ручками перед каждым коммитом, если имело место изменение в БД — если кто подскажет, как сделать это автомагически, буду только рад. Юзаю Tortoise SVN.
Все про українське ІТ в телеграмі — підписуйтеся на канал DOU
17 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.