diff --git a/sapl/legacy/scripts/migra_um_db.sh b/sapl/legacy/scripts/migra_um_db.sh index 7e76c60c4..f0644a2be 100755 --- a/sapl/legacy/scripts/migra_um_db.sh +++ b/sapl/legacy/scripts/migra_um_db.sh @@ -2,7 +2,8 @@ # rodar esse script na raiz do projeto if [ $# -eq 3 ]; then - DIR=~/logs_migracao + DATE=$(date +%Y-%m-%d) + DIR=~/${DATE}_logs_migracao mkdir -p $DIR LOG="$DIR/$1.migracao.log" @@ -15,7 +16,16 @@ if [ $# -eq 3 ]; then echo "--- CRIANDO BACKUP ---" | tee -a $LOG echo >> $LOG - mysql -u $2 -p$3 -e "create database if not exists $1_copy;" && mysqldump -u $2 -p$3 $1 | mysql -u $2 -p$3 $1_copy; + EXISTE=`mysql -u $2 -p$3 -N -s -e "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$1_copy';"` + + if [[ $EXISTE == $1_copy ]]; then + mysql -u $2 -p$3 -N -s -e "DROP DATABASE IF EXISTS $1; CREATE DATABASE $1;" && mysqldump -u $2 -p$3 $1_copy | mysql -u $2 -p$3 $1 + echo "O banco legado foi restaurado" |& tee -a $LOG + elif [[ ! $EXISTE ]]; then + mysql -u $2 -p$3 -N -s -e "CREATE DATABASE $1_copy;" + mysqldump -u $2 -p$3 $1 | mysql -u $2 -p$3 $1_copy + echo "O banco de cópia $1_copy não existia e foi criado" |& tee -a $LOG + fi echo >> $LOG echo "--- DJANGO MIGRATE ---" | tee -a $LOG @@ -23,11 +33,14 @@ if [ $# -eq 3 ]; then DATABASE_NAME=$1 ./manage.py migrate --settings sapl.legacy_migration_settings echo >> $LOG + # XXX Na primeira execução desse comando aparece o erro de "Coammands out of sync" + # A solução mais rápida foi executar duas vezes seguidas pra poder migrar. + DATABASE_NAME=$1 ./manage.py migracao_25_31 -f --settings sapl.legacy_migration_settings echo "--- MIGRACAO DE DADOS ---" | tee -a $LOG echo >> $LOG DATABASE_NAME=$1 ./manage.py migracao_25_31 -f --settings sapl.legacy_migration_settings |& tee -a $LOG echo >> $LOG else echo "USO:" - echo " ./sapl/legacy/scripts/migra_um_db.sh [nome_database] [usuário mysql] [senha mysql]" + echo " $0 [nome_database] [usuário mysql] [senha mysql]" fi;