Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso alterar os prefixos em todas as tabelas no meu banco de dados MySQL?


A solução zerkms não funcionou para mim. Eu tive que especificar o information_schema banco de dados para poder consultar as Tables tabela.
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:

Otimizou a consulta para chamar RENAME TABLE apenas uma vez. Algo que encontrei foi o fato de que a saída concatenada foi truncada em 341 caracteres. Isso pode ser resolvido (se permitido pelo seu servidor) configurando a variável MySQL group_concat_max_len para um valor maior:
SET group_concat_max_len = 3072; -- UTF8 assumes each character will take 3 bytes, so 3072/3 = 1024 characters.