Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je changer les préfixes dans toutes les tables de ma base de données MySQL ?

La solution zerkms n'a pas fonctionné pour moi. J'ai dû spécifier le information_schema base de données pour pouvoir interroger les Tables tableau.

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';

Modifier :

Optimisation de la requête pour n'appeler qu'une seule fois RENAME TABLE. Quelque chose dans lequel je suis entré était le fait que la sortie concaténée était tronquée à 341 caractères. Cela peut être résolu (si autorisé par votre serveur) en définissant la variable MySQL group_concat_max_len à une valeur supérieure :

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