MySql - Trasformare ROW_FORMAT da Compact a Dynamic in Tabelle InnoDB

Quanto segue vale solo per tabelle basate su ENGINE InnoDB e non MyISAM o altro. La procedura può essere facilmente adeguata per altri formati ROW_FORMAT e/o per altri ENGINE . VERIFICHE PRELIMINARI ---------------------------- Listare le tabelle InnoDB presenti nell'intero DataBase che hanno ROW_FORMAT settato a Compact: SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE ROW_FORMAT='compact'; Listare le tabelle InnoDB presenti nell'intero DataBase che hanno ROW_FORMAT diverso da Compact: SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE ROW_FORMAT!='compact'; Listare TUTTE le tabelle (i.e. anche NON InnoDB) presenti nell'intero DataBase che hanno ROW_FORMAT diverso da Compact: SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE ROW_FORMAT!='compact'; Listare TUTTE le tabelle (i.e. anche NON InnoDB) presenti nell'intero DataBase che hanno ROW_FORMAT diverso da Dynamic: SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE ROW_FORMAT!='dynamic'; ---------------------------------------------------------------------------------------------------------------- PRODURRE UNA LISTA DI QUERY PER AGGIORNARE LE TABELLE ----------------------------------------------------------------------- SELECT CONCAT("ALTER TABLE ", NAME,' ROW_FORMAT=DYNAMIC;') FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE ROW_FORMAT='compact'; Questa produrrà una lista di query differenziabile per DataBase così da poter scegliere i singoli DB su cui eseguire o meno la migrazione. Le sing ALTER TABLE MySite1DB/gtr8D_modules_menu ROW_FORMAT=DYNAMIC; ALTER TABLE MySite1DB/gtr8D_newsfeeds ROW_FORMAT=DYNAMIC; ALTER TABLE MySite1DB/gtr8D_overrider ROW_FORMAT=DYNAMIC; ALTER TABLE MySite1DB/gtr8D_redirect_links ROW_FORMAT=DYNAMIC; ALTER TABLE MySite1DB/gtr8D_schemas ROW_FORMAT=DYNAMIC; ALTER TABLE MyDB2/fdtrr4_modules_menu ROW_FORMAT=DYNAMIC; ALTER TABLE MyDB2/fdtrr4_newsfeeds ROW_FORMAT=DYNAMIC; ALTER TABLE MyDB2/fdtrr4_overrider ROW_FORMAT=DYNAMIC; ALTER TABLE MyDB2/fdtrr4_redirect_links ROW_FORMAT=DYNAMIC; ALTER TABLE MyDB2/fdtrr4_schemas ROW_FORMAT=DYNAMIC; .... Per ogni singolo DataBase che si vuole trasformare, ripetere la seguente procedura: 1. Eliminare, con un editor di testo, le stringhe "<nomeDB>/" da tutte le query: ALTER TABLE fdtrr4_modules_menu ROW_FORMAT=DYNAMIC; ALTER TABLE fdtrr4_newsfeeds ROW_FORMAT=DYNAMIC; ALTER TABLE fdtrr4_overrider ROW_FORMAT=DYNAMIC; ALTER TABLE fdtrr4_redirect_links ROW_FORMAT=DYNAMIC; ALTER TABLE fdtrr4_schemas ROW_FORMAT=DYNAMIC; 2. Entrare nel DB desiderato: (con phpMyAdmin, anziché usare il comando, selezionare il DB) USE MyDB2 3. Eseguire in blocco le query del punto 1