Error number: MY-013072; Symbol: ER_IB_MSG_1247; SQLSTATE: HY000
Message: Starting shutdown…
错误说明:
MySQL错误ER_IB_MSG_1247,其MySQL错误编号为MY-013072,SQLSTATE为HY000,指示InnoDB表空间维护但是InnoDB存储引擎已被禁用。
当用户尝试在MySQL中针对InnoDB表进行一些操作时,可能会遇到此错误。比如,如果用户试图ALTER TABLE,CREATE TABLE,DROP TABLE或者运行任何表维护操作,可能会导致这个错误。
解决方法:
第一步:明确ER_IB_MSG_1247是因为InnoDB存储引擎被禁用才发生的错误。因此,首先要确保InnoDB引擎已启用。要检查,可以使用SHOW ENGINES命令来确定InnoDB是否已启用,如下所示:
SHOW ENGINES;
第二步:如果InnoDB未启用,则可以使用SET GLOBAL innodb = TRUE命令来启用InnoDB引擎。或者,您也可以打开MySQL配置文件(通常是my.cnf)并将innodb_engine项设置为on。要重启MySQL服务,以使设置生效,可以使用以下命令:
sudo service mysql restart
第三步:在InnoDB引擎启用之后,可以重试操作,特别是运行表维护操作。如果操作仍然引发ER_IB_MSG_1247错误,则可以使用提供的替代解决方案:
• 对于ALTER TABLE,您可以尝试使用INPLACE算法而不是默认的COPY算法。如果需要,可以在ALTER TABLE表达式中使用ALGORITHM参数来指定算法。
• 对于CREATE TABLE,您可以考虑在表定义中增加建议索引。此外,在某些情况下,您可以试图为表指定存储引擎。
• 对于DROP TABLE,建议您在DROP TABLE表达式中使用ONLINE参数(ONLINE参数需要MySQL 5.6.4或更高版本),以最大程度地减少维护时间。
综上所述,可以使用上述几个步骤来解决MySQL错误ER_IB_MSG_1247。