Mysql

InnoDB 到 MyISAM 的轉換問題

  • February 24, 2014

我有一個基於 CentOS 5 OS、mysql 5 和 phpmyadmin 的專用伺服器

我試圖將所有數據庫表從 InnoDB 轉換為 MISAM。我試圖通過在 /etc/my.cnf 文件中設置值來做到這一點

skip-innodb 

之後,我發現伺服器中的一些php腳本有一些錯誤

Unknown table engine 'InnoDB'

我在 phpmyadmin 中檢查了一些數據庫,我在每個數據庫中發現了一些正在使用的表

如何將所有表從 InnoDB 成功轉換為 MyISAM ?

設置skip-innodb確實禁用了 InnoDB 儲存引擎,但這不會轉換錶。

您需要編寫所有表的轉換腳本。

第1步

註釋掉skip-innodb

[mysqld]
#skip-innodb

第2步

service mysql restart

第 3 步

執行以下腳本 snf 查看結果

CONVERT_SCRIPT=/tmp/InnoDBConversionToMyISAM.sql
SQL="SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') "
SQL="${SQL} FROM information_schema.tables "
SQL="${SQL} WHERE engine='InnoDB' AND table_schema <> 'mysql'"
mysql -uroot -p -ANe"${SQL}" > ${CONVERT_SCRIPT}

第四步

查看腳本

vi /tmp/InnoDBConversionToMyISAM.sql

要麼

less /tmp/InnoDBConversionToMyISAM.sql

如果你喜歡這些內容,那麼…

第 5 步

登錄到mysql並執行

mysql> source /tmp/InnoDBConversionToMyISAM.sql

第 6 步

取消註釋掉skip-innodb

[mysqld]
skip-innodb

第 7 步

service mysql restart

第 8 步

沒有第 8 步。就是這樣!

試一試 !!!

引用自:https://dba.stackexchange.com/questions/59491