以前我講過直接使用ALTER TABLE my_table ENGINE=InnoDB來直接修改數(shù)據(jù)庫或表的存儲引擎了,這樣做可以成功但風(fēng)險也較大,容易導(dǎo)致數(shù)據(jù)表損壞了,下面我來介紹比較安全的做法.
1.真接修改,在數(shù)據(jù)多的時候比較慢,而且在修改時會影響讀取性能,my_table是操作的表,innoDB是新的存儲引擎,代碼如下:
ALTER TABLE my_table ENGINE=InnoDB
2.導(dǎo)出,導(dǎo)入,這個比較容易操作,直接把導(dǎo)出來的sql文件給改了,然后再導(dǎo)回去,用mysqldump,楓哥常用的是navicate那樣更容易上手,友情提醒風(fēng)險較大.
3.創(chuàng)建,插入,這個比第一種速度快,安全性比第二種高,推薦,分2步操作:
a.創(chuàng)建表,先創(chuàng)建一個和要操作表一樣的表,然后更改存儲引擎為目標(biāo)引擎,代碼如下:
CREATE TABLE my_tmp_table LIKE my_table;
ALTER TABLE my_tmp_table ENGINE=InnoDB;//Vevb.com
b.插入,為了安全和速度,最好加上事務(wù),并限制id(主鍵)范圍,代碼如下:
INSERT INTO my_tmp_table SELECT * FROM my_table;
好了MySQL修改表存儲引擎做法就到這里了,最后的方法是利用臨時表來做,當(dāng)然如果你不想這樣做可以先備份好數(shù)據(jù),然后再使用第一種辦法來修改.
新聞熱點
疑難解答
圖片精選