Как изменить MyISAM на Aria в MariaDB?

Раздел: Программирование
Написано: 2.09.2019
Автор: Antonio

Когда-то давно мы перешли на базу данных MariaDB.

MariaDB logo

В то время для конвертации типа базы данных с 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.

Поделиться с друзьями или в соц.сетях (спасибо)
Ещё похожие заметки:

Написать

Копирование информации с сайта возможно только с указанием прямой ссылки - https://nemcd.com