1. 程式人生 > >批量修改Mysql數據庫表MyISAM為InnoDB

批量修改Mysql數據庫表MyISAM為InnoDB

mysql alter engine innodb


網上有這樣一個方法:

1.查看當前數據引擎的命令:

show engines;

2.

USE `[DBNAME]`;

SELECT GROUP_CONCAT(CONCAT( ‘ALTER TABLE ‘ ,TABLE_NAME ,‘ ENGINE=InnoDB; ‘) SEPARATOR ‘‘ )

FROM information_schema.TABLES AS t

WHERE TABLE_SCHEMA = ‘[DBNAME]‘ AND TABLE_TYPE = ‘BASE TABLE‘;

將其中的紅色部分替換為你所使用的數據庫

執行後其實生成的是查詢命令,然後copy生產的命令,執行SQL 即可:

ALTER TABLE info_aaaa ENGINE=InnoDB; ALTER TABLE info_data_bbb ENGINE=InnoDB; ALTER TABLE info_data_ccc ENGINE=InnoDB; ALTER TABLE info_data_ddd ENGINE=InnoDB; ALTER TABLE info_data_eee ENGINE=InnoDB; ALTER TABLE info_data_fffENGINE=InnoDB;


再次查看數據表的數據引擎已經更改了:show table status from [DBNAME];


但是,生成的命令,只有一小部分,可能表太多了吧。


那就用下面這一句,在查詢裏,貼如下命令,將生成


SELECT concat(‘ALTER TABLE ‘, TABLE_NAME,‘ ENGINE=InnoDB;‘) FROM Information_schema.TABLES WHERE TABLE_SCHEMA = ‘jingzong‘ AND ENGINE = ‘MYISAM‘ AND TABLE_TYPE = ‘BASE TABLE‘


生成的語句是:


CREATE TABLE MY_TABLE (
`concat(‘ALTER TABLE ‘, TABLE_NAME,‘ ENGINE=InnoDB;‘)` VARCHAR
);
INSERT INTO MY_TABLE(`concat(‘ALTER TABLE ‘, TABLE_NAME,‘ ENGINE=InnoDB;‘)`) VALUES (‘ALTER TABLE jz_admin ENGINE=InnoDB;‘);

INSERT INTO MY_TABLE(`concat(‘ALTER TABLE ‘, TABLE_NAME,‘ ENGINE=InnoDB;‘)`) VALUES (‘ALTER TABLE jz_admin_panel ENGINE=InnoDB;‘);
INSERT INTO MY_TABLE(`concat(‘ALTER TABLE ‘, TABLE_NAME,‘ ENGINE=InnoDB;‘)`) VALUES (‘ALTER TABLE jz_admin_role ENGINE=InnoDB;‘);
INSERT INTO MY_TABLE(`concat(‘ALTER TABLE ‘, TABLE_NAME,‘ ENGINE=InnoDB;‘)`) VALUES (‘ALTER TABLE jz_admin_role_priv ENGINE=InnoDB;‘);
INSERT INTO MY_TABLE(`concat(‘ALTER TABLE ‘, TABLE_NAME,‘ ENGINE=InnoDB;‘)`) VALUES (‘ALTER TABLE jz_announce ENGINE=InnoDB;‘);
INSERT INTO MY_TABLE(`concat(‘ALTER TABLE ‘, TABLE_NAME,‘ ENGINE=InnoDB;‘)`) VALUES (‘ALTER TABLE jz_attachment ENGINE=InnoDB;‘);
INSERT INTO MY_TABLE(`concat(‘ALTER TABLE ‘, TABLE_NAME,‘ ENGINE=InnoDB;‘)`) VALUES (‘ALTER TABLE jz_attachment_index ENGINE=InnoDB;‘);
INSERT INTO MY_TABLE(`concat(‘ALTER TABLE ‘, TABLE_NAME,‘ ENGINE=InnoDB;‘)`) VALUES (‘ALTER TABLE jz_badword ENGINE=InnoDB;‘);


全部語句是有了,但這一段,不好使用,

手動建一個文件,把沒有用的去掉,批量查詢...替換為‘‘,

留下:ALTER TABLE jz_admin ENGINE=InnoDB;

這樣的。

然後再貼到查詢裏,執行一遍就可以了。



---------- 招募未來大神 -----------------------

如果您有利他之心,樂於幫助他人,樂於分享
如果您遇到php問題,百度且問了其他群之後仍沒得到解答

歡迎加入,PHP技術問答群,QQ群:292626152

教學相長!幫助他人,自己也會得到提升!

為了珍惜每個人的寶貴時間,請大家不要閑聊!

願我們互相幫助,共同進步!

加入時留言暗號,php,ajax,thinkphp,yii...


批量修改Mysql數據庫表MyISAM為InnoDB