如何将表的存储引擎从MyISAM更改为InnoDB

3

我执行了命令“show table status”,发现我的所有表的引擎类型都是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。请告诉我这是为什么以及如何使其工作?

查询似乎是正确的,你确定你输入的就是这个吗?此外,MySql 3.23不是有点过时了吗? - Jon
创建一个类型为INNODB的新表是否可行? - jeha
2个回答

2

我认为你的版本无法做到这一点。来自旧版MySQL CREATE TABLE文档...

ENGINE和TYPE选项指定表的存储引擎。 ENGINE在MySQL 4.0.18(用于4.0)和4.1.2(用于4.1)中添加。


在这个上下文中,“ENGINE”和“TYPE”意思相同。使用适合您版本的那个。 - Rick James

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实用程序应该就可以解决问题。


感谢您的精彩和极其有价值的回复......事实上,我猜想问题可能是由于我的MySql版本。但是问题仍然没有解决。我实际上使用了 type 而不是 engine,如下所示:ALTER TABLE PROJECT_TITLES_ORGANIZATION TYPE=InnoDB;问题应该已经解决了。但是当我检查它时:show table status.....它仍然报告相同的引擎为 myisam 而不是更新后的 innodb。 我甚至重新启动了 mysqld....但是没有任何用处....... 期待解决方案....!! - abhinav chourasia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接