Error number: MY-010726; Symbol: ER_FAILED_TO_REMOVE_TEMP_TABLE; SQLSTATE: HY000
Message: Could not remove temporary table: ‘%s’, error: %d
错误说明
MY-010726 (ER_FAILED_TO_REMOVE_TEMP_TABLE) 是MySQL触发的一个异常状态,表示MySQL尝试删除临时表失败。
常见案例
某些MySQL查询的操作可能会在临时表中创建数据,例如使用join操作合并多张表,这种场景下MySQL可能会在内存或者硬盘上为这个操作创建一个临时表来保存中间结果,这意味着MySQL操作结束时需要删除该临时表以释放内存。
在某些情况下,MySQL可能无法安全的删除临时行,抛出ER_FAILED_TO_REMOVE_TEMP_TABLE异常。这在MySQL的某些高版本(5.6+)可能是由于目录或者文件权限问题引起的,或者由于记录在information_schema.innodb_temp_table_info中的信息引起的。
解决方法
ER_FAILED_TO_REMOVE_TEMP_TABLE错误通常一般会给一定时间内自动解决,因为MySQL会定期检查并清理文件系统上的临时文件。
如果错误持续出现,可以通过以下方法来解决:
调查information_schema.innodb_temp_table_info表中的信息,看是否有不一致的条目,如果有,可以删除它们。
如果MySQL版本5.x或更高,则可以通过使用权限设置,改变MySQL操作系统文件系统的方式来解决此问题。
另外,可以使用某些方法应用于MySQL配置文件中的open_files_limit参数,从而解决系统文件夹被过多请求打开的问题