MySQL-Engine ändern für mehrere Tabellen

Gespeichert von Erik Wegner am/um
Body

Der folgende Befehl liest alle Tabellen einer Datenbank aus. Deren Name wird genutzt, um einen neuen Befehl zu erstellen, der die Datenbankengine ändert.

SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=InnoDB;') 
  FROM information_schema.tables 
  WHERE table_schema = 'DATENBANKNAME' AND Engine <> 'InnoDB' 
  ORDER BY table_name DESC

Zuerst werden alle Tabellen einer Datenbank ausgegeben, die noch nicht InnoDB als Engine verwenden. Die gewünschte Datenbank wird als Bedingung an table_schema übergeben.

Die gefundenen Tabellennamen werden mit Hilfe des Befehls CONCAT zu einer neuen Zeichenkette zusammengefügt. Dies ist der notwendige SQL-Befehl, der MySQL anweist, die Datenbanktabelle zu ändern.

Die Ausgabe wird über die Zwischenablage wieder an die MySQL-Befehlszeile übergeben.

Kategorien