批量修改Mysql数据库表MyISAM为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...

时间: 2024-11-06 22:31:13

批量修改Mysql数据库表MyISAM为InnoDB的相关文章

批量修改mysql数据库表前缀。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

批量修改Mysql数据库表Innodb为MyISAN

mysql -uroot -e "SELECT concat('ALTER TABLE ', TABLE_NAME,' ENGINE=MYISAM;') FROM Information_schema.TABLES WHERE TABLE_SCHEMA = 'jitamin2' AND ENGINE = 'InnoDB' AND TABLE_TYPE = 'BASE TABLE'"

查看和修改MySQL数据库表存储引擎

要做一名合格的程序员,除了把代码写的漂亮外,熟知数据库方面的知识也是不可或缺的,下面总结一下如何查看和修改MySQL数据库表存储引擎:        1.查看数据库所能支持的存储引擎:show engines;        2.查看某个数据库中某个表所使用的存储引擎:show table status from db_name where name='table_name';        3.修改表引擎方法:alter table table_name engine=innodb;     

phpMyAdmin批量修改Mysql数据表前缀的方法

多个网站共用一个Mysql数据库时,为使数据库管理不混乱,一般采用不同的网站使用不同前缀名的方式进行区分.而如何批量修改已有数据库的前缀名 呢?全部导出修改后再导入?还是一个表一个表的修改?今天我要介绍的是相对简单的批量修改数据库中表前缀的方法,适用于修改数据库中相同前缀且数据表较多 的情况. 此例中假定修改名为“www_sdck_cn”的数据库中前缀为“phpcms_”的表,并将所有符合条件表的前缀修改为“sdck_”. 1.        用phpMyAdmin打开要修改前缀的数据库www_

MySQL 数据库中MyISAM 和 InnoDB 的区别

首先要明白,在MySQL数据库忠中的存储引擎是基于表的,而不是基于数据库的. 讲述两者区别: InnoDB 存储引擎,主要面向 OLTP(Online Transaction Processing,在线事务处理)方面的应用,是第一个完整支持 ACID 事务的存储引擎(BDB 第一个支持事务的存储引擎,已经停止开发). 特点: 行锁设计.支持外键: 支持类似于 Oracle 风格的一致性非锁定读(默认情况下读取操作不会产生锁): InnoDB 将数据放在一个逻辑的表空间中,由 InnoDB 自身进

常用mysql数据库引擎——MyISAM和InnoDB区别

背景: 昨天做项目时,发现使用事务后回滚不了,后来把数据库引擎从MyISAM换成InnoDB后果断好了,如下图: 正文: MyISAM和InnoDB是mysql常用的数据库引擎,他们的区别如下: 数据库引擎 适用范围 性能 事务 外键 数据受损恢复 MyISAM 适合频繁查询 高 × × × InnoDB 适合频繁修改 中 √ √ √ 注:MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎 参考资料: MySQL数据库引擎介绍.区别.创建和性能测试的深入分析 http://www.jb

修改MYSQL数据库表的字符集

MySQL 乱码的根源是的 MySQL 字符集设置不当的问题,本文汇总了有关查看 MySQL 字符集的命令.包括查看 MySQL 数据库服务器字符集.查看 MySQL 数据库字符集,以及数据表和字段的字符集.当前安装的 MySQL 所支持的字符集等. 一.查看 MySQL 数据库服务器和数据库字符集. mysql> show variables like '%char%';+--------------------------+----------------------------------

MySQL数据库引擎MyISAM与InnoDB的区别

1. 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩展名为.MYD (MYData).索引文件的扩展名是.MYI (MYIndex).InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB. 2. 存储空间 MyISAM:可被压缩,存储空间较小.支持三种不同的存储格式:静态表(默认,但是注意数据

MySQL数据库之MyISAM与InnoDB的区别

从以下几个方面: 1.存储结构 每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型. .frm文件存储表定义. 数据文件的扩展名为.MYD (MYData). 索引文件的扩展名是.MYI (MYIndex). 2.存储空间 MyISAM:可被压缩,存储空间较小. InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引. MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少.能加载更多索引,而I