Las soluciones anteriores no fueron suficientemente completos como para mí. Dejaron caer atributos de columna como auto_increment, valores predeterminados y Not Null. Además, no quería cambiar columnas en information_schema y mysql.
Advertencia: No investigué todas las combinaciones de atributos de columna. Solo el conjunto que me permitió convertir mi base de datos. Puede haber más constantes como CURRENT_TIMESTAMP en su base de datos.
He utilizado algunas de las siguientes variaciones para determinar lo que estaba en mi base de datos.
SELECT distinct COLUMN_DEFAULT FROM information_schema.columns
Esta es la solución que funcionó para mí:
select
CONCAT('ALTER TABLE ', '`', t.TABLE_NAME, '`', ' CHANGE `', c.COLUMN_NAME, '`',
' `', LOWER(`COLUMN_NAME`), '` ', COLUMN_TYPE,
IF (IS_NULLABLE = "YES", ' ', ' NOT NULL'),
IF (IS_NULLABLE = "YES",
IF (COLUMN_DEFAULT IS NULL, 'DEFAULT NULL', IF (COLUMN_DEFAULT = 'CURRENT_TIMESTAMP', ' DEFAULT CURRENT_TIMESTAMP', CONCAT(' DEFAULT ', '''', COLUMN_DEFAULT, ''''))),
IF (COLUMN_DEFAULT IS NOT NULL, IF (COLUMN_DEFAULT = 'CURRENT_TIMESTAMP', ' DEFAULT CURRENT_TIMESTAMP', CONCAT(' DEFAULT ', '''', COLUMN_DEFAULT, '''')), '')) ,
' ', EXTRA, ';')
from
information_schema.tables t
JOIN
information_schema.columns c
ON (c.table_name = t.table_name)
WHERE t.table_type = 'BASE TABLE'
AND t.table_schema not in ('information_schema', 'mysql')
INTO OUT FILE '/tmp/ColumnsToLowerCase.sql'
Ahorro de tiempo: notas Para dar salida a un archivo necesita conectarse a la base de datos con derechos suficientes. Tengo acceso de root, así que inicié sesión como root, pero el corte y el pasado de los resultados también funcionan si es necesario.
+1, CamelCase Hacer su mundo al revés ... – ajreal