原理:先創建新的數據庫,然后利用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='數據庫名稱';
完。