Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso modificare i prefissi in tutte le tabelle nel mio DB MySQL?

La soluzione zerkms non ha funzionato per me. Ho dovuto specificare lo information_schema database per poter interrogare le Tables tabella.

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

Modifica:

Ottimizzata la query per chiamare RENAME TABLE solo una volta. Qualcosa in cui sono entrato è stato il fatto che l'output concatenato è stato troncato a 341 caratteri. Questo può essere risolto (se consentito dal tuo server) impostando la variabile MySQL group_concat_max_len a un valore superiore:

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