Error number: MY-012899; Symbol: ER_IB_MSG_1074; SQLSTATE: HY000
Message: Error in creating %s: probably out of disk space
Error MY-012899 – ER_IB_MSG_1074 – HY000
错误说明
MY-012899 – ER_IB_MSG_1074是MySQL的一个错误代码,表明当MySQL服务器正在做一个表删除操作时,它无法删除表的某个外键元祖(tuple)。它和MySQL的InnoDB存储引擎有关,该类型存储引擎建立在MySQL 5.0之后已被实现。
常见案例
在很多情况下,MY-012899 – ER_IB_MSG_1074错误可能当尝试Test Database Developer在MySQL卸载一个表时被触发。此时,如果MySQL服务器运行在严格外键检查模式(strictforeignkeycheck mode)下,任何尝试从数据库中删除表的操作都会被阻止,因为表的某个外键元祖仍被另一个表引用。
另一种情况,就是在MySQL耗尽全部内存(memory)下触发的,尝试在MySQL应用的数据库中执行一个庞大的表和多个外键元祖,可能会引起内存溢出(overflow),并影响其它MySQL应用,最终会导致该错误信息出现。
解决方法
要解决该错误,客户可以在MySQL服务器上启用strictforeignkeycheck模式,以确保删除表之前,此表的外键元组不被另一个表引用。MySQL客户可以将此配置参数设置为ON或OFF,以实现此操作。另外,为了避免MySQL服务器耗尽内存,可以增加RAM,或者将MySQL数据库中之前建立的外键属性减少,减少表的外键元祖数量也可以避免此错误。