miércoles, 18 de julio de 2012

Renombrar todas las tablas de MySQL para cambiar lower_case_table_names

En ocasiones es necesario cambiar el lower_case_table_names para mantener compatibilidad de aplicaciones ejecutándose en Windows o en Linux. Si las bases de datos ya residen en el servidor Linux, antes de cambiar este parámetro a 1 (para compatibilizarlo con Windows), hay que renombrarlas todas para que estén en minúsculas. Este pequeño snippet puede servir de ayuda para hacerlo:



#!/bin/bash

for i in $(mysql -NB -e 'show databases'); do
        if [ $i == 'mysql' -o $i == 'information_schema' ]; then
                continue;
        fi
        echo "DB: $i"
        for j in $(mysql -NB -e "show tables from $i"); do
                lower=$(echo $j | tr [[:upper:]] [[:lower:]])
                if [ "$lower" == "$j" ]; then
                        continue;
                fi
                echo "$j -> $lower"
                mysql -e "RENAME TABLE $j to $lower" $i
        done
done

No hay comentarios: