sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo cambiar los prefijos en todas las tablas en mi base de datos MySQL?

La solución de zerkms no funcionó para mí. Tuve que especificar el information_schema base de datos para poder consultar las Tables mesa.

SELECT 
    CONCAT('RENAME TABLE ', GROUP_CONCAT('`', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`')) AS q
FROM 
    `information_schema`.`Tables` WHERE TABLE_SCHEMA='test';

Editar:

Optimicé la consulta para llamar a RENAME TABLE solo una vez. Algo en lo que me encontré fue el hecho de que la salida concatenada se truncó en 341 caracteres. Esto se puede resolver (si su servidor lo permite) configurando la variable MySQL group_concat_max_len a un valor más alto:

SET group_concat_max_len = 3072; -- UTF8 assumes each character will take 3 bytes, so 3072/3 = 1024 characters.