Ältere Datenbanken auf Basis von MySQL und MariaDB müssen früher oder später von MyISAM auf InnoDB migriert werden. Hinzu kommt meist noch eine Migration der Zeichenkodierung auf eine Variante von UTF8.

Hier ist ein einfaches Template, das versucht, beide Schritte zu kombinieren.

Der Variablenwert SET @dbname = 'db' muss durch einen eigenen Wert ersetzt werden.

START TRANSACTION;
SET @dbname = 'db';

-- MyISAM konvertieren
SELECT CONCAT('ALTER TABLE `', TABLE_NAME, '` ENGINE=InnoDB;')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'DB'
  AND ENGINE = 'MyISAM'

UNION

-- Alle Tabellen auf utf8mb4 umstellen
SELECT CONCAT('ALTER TABLE `', TABLE_NAME, '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = @dbname
  AND TABLE_COLLATION != 'utf8mb4_general_ci';

COMMIT;

Die Ausgabe ist eine Reihe von SQL-Abfragen, die die Migration durchführen sollen, wenn sie ausgeführt werden.

Allerdings handelt es sich hierbei nur um eine Vorlage und ein Backup der Datenbank ist nach wie vor zwingend erforderlich, ebenso wie eine manuelle Sichtung und Kontrolle der generierten SQL-Abfragen.