gpt4 book ai didi

mysql - 当默认存储引擎数据库是MyIsam时,InnoDB引擎的表会被损坏吗?

转载 作者:行者123 更新时间:2023-11-29 15:53:36 25 4
gpt4 key购买 nike

我正在开发一个电子商务网站,并且我正在使用外键来表示数据库中的表关系。所以我决定对 MySQL 中的所有表使用 InnoDB 引擎。但我的托管服务器使用 MyIsam 作为默认存储引擎数据库,我无法将其更改为 InnoDB。有一天,我的 InnoDB 引擎数据库中的一张表被损坏并出现错误。它说“引擎中不存在表”。

我已询问托管客户服务,但他们无法给我解决方案。我的表是否因为表和数据库的引擎不同而无法访问?因为我所有的表都使用 InnoDB 作为引擎,但我的数据库默认存储引擎使用 MyIsam。

请给我一些关于如何解决我的问题的解释。谢谢。

最佳答案

仅当您创建表但未显式声明引擎时,默认存储引擎才相关。

// uses the default storage engine:
CREATE TABLE mytable ( ... );

// uses innodb storage engine, regardless of default:
CREATE TABLE mytable ( ... ) ENGINE=InnoDB;

如果您使用ENGINE=InnoDB声明您的表,它就会保持这种状态。将默认存储引擎更改为 MyISAM 不会对现有表产生任何影响。它仅影响随后创建的表,并且仅当它们未指定引擎时。

当您尝试查询表但表空间已被 ALTER TABLE mytable DISCARD TABLESPACE 丢弃,或者如果 .ibd 文件已从文件系统中删除。

这意味着有人破坏了您的数据。除非您有备份,否则现在无法恢复。

自 2010 年以来,InnoDB 一直是默认存储引擎。现在是时候将其视为处理 MySQL 中数据的主要方式了。

我希望您能找到新的托管提供商。

关于mysql - 当默认存储引擎数据库是MyIsam时,InnoDB引擎的表会被损坏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56620551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com