MySQL Error number: MY-012855; Symbol: ER_IB_MSG_1030; SQLSTATE: HY000 报错 故障修复 远程处理


文档解释

Error number: MY-012855; Symbol: ER_IB_MSG_1030; SQLSTATE: HY000

Message: %s

错误说明:

MySQL错误代码MY-012855,符号ER_IB_MSG_1030,SQLSTATEHY000,提示用户不能创建已经存在的表,在Innobase索引缓存内,这个表已经存在。显示MySQL因已经存在的表而无法建表。

常见案例

在一个MariaDB / MySQL数据库中,如果尝试创建一个表,却发现这个表已经存在,那么就会出现这个错误。另外,如果在创建表语句中,未指定表的存储引擎,而这个同名的表使用Innobase存储引擎,该表仍然在MySQL的索引缓存中,这也会引发此错误。

解决方法:

如果满足上述情况,第一步要做的就是讲MySQL的索引缓存重新清理掉,并从零开始加载。可以在MySQL控制台运行FLUSH TABLES,然后在显示的消息中重启活动的数据库实例,再次尝试创建该表即可。

另外,MySQL也提供了建表语句中“IF NOT EXISTS”句子,可以避免创建和现存表重复的问题,可以采用这种方式防止出现ER_IB_MSG_1030错误,只要在创建表的语句里增加“IF NOT EXISTS”,就可以避免重复创建表的问题。比如:CREATE TABLE IF NOT EXISTS tableName(…),MySQL就会先检查表是否存在,如果存在就忽略这条命令,而不会出现ER_IB_MSG_1030错误。