2015-11-06 4 views
1

Мне нужно изменить всю таблицу в ядре базы данных от Innodb до MyISAM с использованием MYSQL. Как я могу это сделать? Кто-нибудь когда-либо делал это раньше? Любые помощь или предложения будут оценены. Благодаря!MYSQL Change Table Engine in Batch

+0

вы имеете в виду вы хотите изменить все таблицы двигатель БД. –

+0

Да. Все таблицы .. – Nere

ответ

2

Вы можете попробовать так:

SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE=MyISAM;') 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'yourdatabase' 
AND  `ENGINE` = 'Innodb' 
AND  `TABLE_TYPE` = 'BASE TABLE' 
ORDER BY table_name DESC; 

Запрос даст вам запрос ALTER, которые вам необходимо выполнить, чтобы изменить двигатели.

Добавить запрос ALTER внутри хранимой процедуры, как это:

DROP PROCEDURE IF EXISTS myProc; 
DELIMITER // 
CREATE PROCEDURE myProc 
BEGIN 
//Here you can put the ALTER statements. 
END// 

DELIMITER ; 
+0

У меня есть список запросов .. для выполнения всего списка только одно время выполнения – Nere

+0

Должен ли я запускать каждый запрос вручную? – Nere

+0

@Imran: - Существует много способов: можно скопировать запросы и создать хранимую процедуру, а затем выполнить хранимую процедуру, чтобы сразу их выполнить. –