Select Git revision
migrate_from_symfony_3_to_5.sh 1.84 KiB
#!/bin/bash
BASE_DIR=$(realpath "$(dirname $0)/../..")
source $BASE_DIR/.env
BACKUP_DB="${MYSQL_DATABASE}_BACKUP_3_TO_5"
mysql_cmd="docker-compose exec mysql mysql -u root -p$MYSQL_ROOT_PASSWORD"
#
# Step 1 backup the db
#
$mysql_cmd -e "use $BACKUP_DB"
backup=$?
if [ "$backup" -ne 0 ]; then
echo "Backup DB does not exists, saving the current DB"
# The backup db does not exists
echo "Creating DB $BACKUP_DB"
$mysql_cmd -e "CREATE DATABASE $BACKUP_DB"
echo "Saving $MYSQL_DATABASE to $BACKUP_DB"
docker-compose exec mysql mysqldump -u root -p$MYSQL_ROOT_PASSWORD $MYSQL_DATABASE |\
grep -v Warning |
docker exec -i $(docker-compose ps -q mysql) mysql -u root -p$MYSQL_ROOT_PASSWORD $BACKUP_DB
echo "Backup done"
else
echo "A previous backup exists, skipping backup step"
fi
#
# Step 2 Reload db with initial data
#
docker-compose exec memorekall-member composer reload-db
#
# Step 3 remove artifact data and copy data from backup table
#
echo "Droping fixture capsule"
$mysql_cmd $MYSQL_DATABASE -e "delete from capsule"
echo "Done"
echo "Droping fixture users"
$mysql_cmd $MYSQL_DATABASE -e "delete from user"
echo "Done"
TABLES="user reset_password_request capsule capsuleGroup capsules_groups doctrine_migration_versions editeur_capsule invitation_editeur_capsule"
for table in $TABLES; do
echo "Reloading table $table"
COLUMNS=$($mysql_cmd --batch --disable-column-names \
-e "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '$table' AND TABLE_SCHEMA='$MYSQL_DATABASE'" |\
grep -v "Warning" | tr '\r\n' ', ' | sed 's/, $//'
)
#echo $COLUMNS
# TODO : what should we do about columns with name mismatch ex user.credential_expired ?
$mysql_cmd -e "INSERT INTO $MYSQL_DATABASE.$table SELECT $COLUMNS FROM $BACKUP_DB.$table;"
echo "done"
done
echo "All done"