1. 程式人生 > >修改Mysql表儲存引擎的三種方法

修改Mysql表儲存引擎的三種方法

  • 通過命令直接修改表的儲存引擎
alter table mytest ENGINE = MyIsam;

這裡寫圖片描述

  • 會導致大量的IO問題,不建議使用;儲存引擎的轉換會導致原有表的特性消失,例如外來鍵等;
  • 使用匯入匯出表,來實現
  • 首先需要修改的表的資料匯出
    這裡寫圖片描述
  • 然後修改關於表儲存引擎的選項
 22 DROP TABLE IF EXISTS `mytest`;  //在進行恢復的過程中,如果不修改原來表的名字原來的表就回被刪除;
 23 /*!40101 SET @saved_cs_client     = @@character_set_client */;
 24 /*!40101 SET character_set_client = utf8 */;
 25 CREATE TABLE `mytest` (
 26   `id` int(11) DEFAULT NULL,
 27   `name` varchar(30) DEFAULT NULL
 28 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 29 /*!40101 SET character_set_client = @saved_cs_client */;
  • 這是一個指令碼,可以通過Mysql命令直接執行;
  • 現在的儲存引擎是MyISAM
    這裡寫圖片描述
  • 如果不需要原來的表,可以執行這個指令碼
root@westos:~# mysql -uroot -p < /mnt/userInfo.mytest.sql -A userInfo
Enter password: 
  • 連線資料庫,查看錶的狀態
    這裡寫圖片描述
  • 資料仍然存在
    這裡寫圖片描述
  • 第三種方式,是通過建立新表,然後重新寫入資料的方式來進行
mysql> create table myisam_mytest like mytest;
Query OK, 0 rows affected (0.08 sec)

mysql> alter table myisam_mytest engine=Myisam;
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> insert into myisam_mytest select * from mytest;
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0
  • 檢視修改後的表狀態
    這裡寫圖片描述
    這裡寫圖片描述