2011-09-17 79 views
3

我執行了show table status命令,發現我的所有表的引擎類型均爲MyISAM。我想將引擎類型更改爲InnoDB。如何將表存儲引擎從MyISAM更改爲InnoDB

我搜查,發現各自的查詢,並寫爲: -

alter table PROJECT_TITLES_ORGANIZATION ENGINE=INNODB; 

但這並沒有工作,我得到這個錯誤信息:

You have an error in your SQL syntax near 'ENGINE=INNODB' at line 1. 

我使用MySQL的版本3.23.54a-11。

請告訴我爲什麼會發生這種情況,以及如何使它工作?

+0

該查詢似乎是正確的,你確定這正是你所鍵入的?另外,是不是MySql 3.23 *有點過時*? – Jon

+0

是否用INNODB類型的工作創建新表? – jeha

回答

1

您的MySQL版本太舊了,因此您在尋求信息時必須密切注意確切版本。設置在V3的存儲引擎中的關鍵字是TYPE而不是ENGINE

ALTER TABLE PROJECT_TITLES_ORGANIZATION TYPE=InnoDB; 

的ENGINE和TYPE選項指定表的存儲引擎。 ENGINE被添加到MySQL 4.0.18(4.0版)和4.1.2(4.1版)中。它是 這些版本的首選選項名稱,TYPE已成爲 棄用。 TYPE在整個4.x系列中均受支持,但將來可能會刪除 。

http://dev.mysql.com/doc/refman/4.1/en/create-table.html


更新:我沒有3.23測試的東西。你應該確保你的服務器啓用了InnoDB。我想最簡單的方法是創建一個測試表作爲InnoDB,看看你是否真的得到了InnoDB表。

如果一切都失敗和InnoDB 啓用後,您可以隨時轉儲表到一個文本文件,修改SQL代碼來改變發動機和重新加載轉儲。使用您的服務器的mysqldump實用程序,它應該做的伎倆。

+0

感謝您的精彩和非常有價值的回覆....事實上,我猜想問題將是我MySql版本的優點。但問題仍未解決。我實際上使用類型而不是引擎: ALTER TABLE PROJECT_TITLES_ORGANIZATION TYPE = InnoDB; 問題應該已經解決了。但是當我檢查它爲: 顯示錶狀態..... 它仍然報告與myisam相同的引擎,而不是更新的引擎作爲innodb。 我甚至重新啓動mysqld ....但它是沒用的....... 期待着解決方案.... !! –

2

我不認爲你可以在你的版本中做到這一點。從old MySQL docs for CREATE TABLE。 。 。

ENGINE和TYPE選項指定表的存儲引擎。 ENGINE被添加到MySQL 4.0.18(4.0版)和4.1.2(4.1版)中。

+0

'ENGINE'和'TYPE'在這種情況下意味着同樣的事情。使用適用於您的版本的那個。 –

相關問題