2011-09-17 85 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'在这种情况下意味着同样的事情。使用适用于您的版本的那个。 –

相关问题