原理:先创建新的数据库,然后利用information_schema数据库表结构信息,用 RENAME命令 将旧的表迁移到新数据库里面,最后删除旧的数据库名称即可。
步骤如下:
#查询目标数据库下面的所有表 SELECT table_name,TABLE_SCHEMA FROM information_schema.TABLES WHERE TABLE_SCHEMA='旧数据库名称'; #创建新数据库 CREATE DATABASE IF NOT EXISTS 新数据库名称 DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci; #将每个旧表迁移到新的数据库里面 RENAME TABLE 旧数据库名称.表1 TO 新数据库名称.表1,旧数据库名称.表2 TO 新数据库名称.表2,……; #查询新数据库下面的所有表是否迁移成功 SELECT table_name,TABLE_SCHEMA FROM information_schema.TABLES WHERE TABLE_SCHEMA='新数据库名称'; #最后删除旧数据库 DROP DATABASE 旧数据库名称;
注意,RENAME这个语法在mysql 5.1.7中被添加进baidu,到了zhi5.1.23又去掉了。
其他相关命令:
#查询目标数据库里的视图 SELECT * FROM information_schema.VIEWS WHERE TABLE_SCHEMA='数据库名称'; #查询目标数据库名 SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN('information_schema','mysql','performance_schema','sys'); #查询目标数据库下面的所有表 SELECT table_name,TABLE_SCHEMA FROM information_schema.TABLES WHERE TABLE_SCHEMA='数据库名称';
完。