Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
У меня почему-то никогда не возникало необходимости обновлять БД при переключении веток. Если я делаю какую-нибудь фичу с изменением схемы БД, то она чаще всего быстренько вливается в мастер и дальше живётся как обычно. Если всё же приспичит менять схему и не вливать в мастер, то я просто создам отдельную временную базу и не буду париться ни с какими синхронизациями
Контроль структуры таблиц осуществляется через миграции в любой ORM, как уже отметили выше. Бэкапы же данных храниться в git не должны (максимум — небольшой набор фикстур для начальной инициализации свежесозданной БД). Так что всё это выглядит довольно бессмысленно
происходит 500-я и вы не знаете почему
Дык логи читать надо
Для того, чтобы соблюсти контроль версии базы данных используя гит, очевидно нужно получать ее дампы
Не нужно, потому что миграции всё контролируют сами
#!/bin/bash
# one argument: the file of config.php file
d7config=$1
if [ ! -f "$d7config" ]; then
echo "File '$d7config' not found."
exit
fi
db=`cat $d7config | grep " 'database' => '" | awk -F"'" '{print $4}'`
if [ -z $db ]; then
echo "Database name not found in $d7config."
exit
fi
user=`cat $d7config | grep " 'username' => '" | awk -F"'" '{print $4}'`
if [ -z $user ]; then
echo "Database user not found in $d7config."
exit
fi
pw=`cat $d7config | grep " 'password' => '" | awk -F"'" '{print $4}'`
if [ -z $pw ]; then
echo "Database credentials not found in $d7config."
exit
fi
#pr=`cat $d7config | grep " 'prefix' => '" | awk -F"'" '{print $4}'`
tables_cmd=""
ignore_cmd=""
for t in "%cache%" "%history" "%search_%" "%sessions" "%watchdog" "%accesslog"
do
for t2 in `mysql $db --user=$user --password=$pw -Bse "show tables like \"$t\";"`
do
tables_cmd="$tables_cmd $t2"
ignore_cmd="$ignore_cmd --ignore-table=$db.$t2"
done
done
# Дамп данных без временных данных и кеша, одна строка данных в строке, без даты создания дампа, без создания БД. Добавление и удаление таблиц и все в одну транзакцию
mysqldump --user=$user \
--password=$pw \
--extended-insert=FALSE \
--skip-dump-date \
--no-create-db \
--add-drop-table \
--single-transaction \
$ignore_cmd \
$db \
> mysqldump.sql
# Дамп только структуры таблиц без данных, без даты создания дампа, без создания БД + добавить удаление таблиц
mysqldump --user=$user \
--password=$pw \
--databases $db \
--skip-dump-date \
--no-create-db \
--add-drop-table \
--no-data \
--tables $tables_cmd \
>> mysqldump.sql
Механизм контроля версий базы данных в GIT (управление дампами MySQL)