Как изменить MyISAM на Aria в MariaDB?
Когда-то давно мы перешли на базу данных MariaDB.
В то время для конвертации типа базы данных с MyISAM на Aria был написан скрипт на PHP. Хочу поделиться в вами, возможно кому пригодится.
<?php ini_set('display_errors', 'On'); error_reporting(E_ALL); $link = @mysql_connect("localhost","username","password") or die("unable to connect to msql server: " . mysql_error()); @mysql_select_db("database", $link) or die("unable to select database 'db': " . mysql_error()); $result = mysql_query("show tables"); if (!$result) { die('query failed: '); } while ($row = mysql_fetch_array($result)){ mysql_query("ALTER TABLE ".$row[0]." ENGINE=Aria; "); } ?>
Скрипт изменит тип всех таблиц в указанной базе данных.
Для использования нужно прописать свои значения, нужно было вывести значения в переменные, но это делалось последовательно для небольшого количества баз, поэтому оставили так.
localhost — IP или если база локальная, то оставляем;
username — имя пользователя с доступом к нужной базе данных;
password — пароль;
database — название базы данных.
Заполняем, сохраняем, выполняем. Получаем все таблицы Aria.
Еще нашел такое решение, его можно применять в виде SQL запроса, оно выдаст список таблиц в MyISAM.
SET @DATABASE_NAME = 'mastertest'; SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE=Aria;') AS sql_statements FROM information_schema.tables AS tb WHERE table_schema = @DATABASE_NAME AND `ENGINE` = 'MyISAM' AND `TABLE_TYPE` = 'BASE TABLE' ORDER BY table_name DESC;
Потом нужно скопировать результат в буфер и выполнить, после этого таблицы переконвертируются в Aria.