Error number: MY-013461; Symbol: ER_IB_CLONE_NON_INNODB_TABLE; SQLSTATE: HY000
Message: Non innodb table: %s.%s is not cloned and is empty.
.
错误说明
MySQL错误MY-013461: ER_IB_CLONE_NON_INNODB_TABLE,是一个错误码,由在以InnoDB的表的操作时发出,比如用来克隆它或者任何创建操作,而表实际上不是InnoDB表。这个错误指明InnoDB操作了不是InnoDB表,它被拒绝。
常见案例
例如,用户忘记一个表的存储引擎,结果中使用InnoDB存储引擎语句克隆一个表时,会引发MySQL错误MY-013461:ER_IB_CLONE_NON_INNODB_TABLE,因为MySQL识别到这个表不是InnoDB表,而InnoDB操作被拒绝。
解决方法
解决这个错误的最常见方法是改用与表比较匹配的存储引擎,比如MyISAM, Memory, Archive等。
由于更改表的存储引擎可能需要复杂的操作,所以它只能以抓取的形式完成。所有的表结构和数据应该建立新的表,并应用新的存储引擎,然后丢弃原来的表。
首先,通过“CREATE TABLE … LIKE”语句创建一个与此表结构相同的新表,使用不同的存储引擎(比如MyISAM)。之后,使用“INSERT … SELECT”语句从旧表中抓取所有行,并将它们移动到新表中。最后,删除旧表,而不是克隆它们。
因此,要避免MySQL错误MY-013461: ER_IB_CLONE_NON_INNODB_TABLE,建议在创建和克隆表时仔细指定表的存储引擎,并确保它们是最恰当的。