Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich Präfixe in allen Tabellen in meiner MySQL-DB ändern?

zerkms Lösung hat bei mir nicht funktioniert. Ich musste das information_schema angeben Datenbank, um die Tables abfragen zu können Tabelle.

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

Bearbeiten:

Die Abfrage wurde optimiert, um RENAME TABLE nur einmal aufzurufen. Etwas, auf das ich gestoßen bin, war die Tatsache, dass die verkettete Ausgabe bei 341 Zeichen abgeschnitten wurde. Dies kann gelöst werden (sofern Ihr Server dies zulässt), indem Sie die MySQL-Variable group_concat_max_len setzen auf einen höheren Wert:

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