38 lines
843 B
MySQL
38 lines
843 B
MySQL
|
|
delimiter |
|
||
|
|
|
||
|
|
DROP PROCEDURE IF EXISTS convert_to_innodb|
|
||
|
|
|
||
|
|
CREATE PROCEDURE convert_to_innodb ()
|
||
|
|
BEGIN
|
||
|
|
DECLARE table_name BLOB;
|
||
|
|
DECLARE table_engine BLOB;
|
||
|
|
DECLARE junk BLOB;
|
||
|
|
DECLARE done INT DEFAULT 0;
|
||
|
|
DECLARE table_cur CURSOR FOR SHOW TABLE STATUS;
|
||
|
|
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
|
||
|
|
|
||
|
|
OPEN table_cur;
|
||
|
|
|
||
|
|
each_table:
|
||
|
|
WHILE done = 0 DO
|
||
|
|
BEGIN
|
||
|
|
FETCH table_cur INTO table_name,table_engine,junk,junk,junk,junk,junk,junk,junk,junk,junk,junk,junk,junk,junk,junk,junk,junk;
|
||
|
|
IF table_engine = 'InnoDB' THEN ITERATE each_table; END IF;
|
||
|
|
|
||
|
|
SET @qtext = CONCAT('ALTER TABLE ',table_name,' ENGINE=InnoDB;');
|
||
|
|
|
||
|
|
PREPARE aquery FROM @qtext;
|
||
|
|
|
||
|
|
EXECUTE aquery;
|
||
|
|
|
||
|
|
DEALLOCATE PREPARE aquery;
|
||
|
|
END;
|
||
|
|
END WHILE;
|
||
|
|
|
||
|
|
CLOSE table_cur;
|
||
|
|
END|
|
||
|
|
|
||
|
|
CALL convert_to_innodb()|
|
||
|
|
|
||
|
|
DROP PROCEDURE convert_to_innodb|
|