Error number: MY-012523; Symbol: ER_IB_MSG_698; SQLSTATE: HY000
Message: The log file may have been corrupt and it is possible that the log scan did not proceed far enough in recovery! Please run CHECK TABLE on your InnoDB tables to check that they are ok! If mysqld crashes after this recovery; %s
错误说明
ER_IB_MSG_698是MySQL的一种错误消息,它属于MySQL的内部错误消息,该条消息属于MySQL服务器内部编码错误消息。
此错误代码具体描述:
“数据库[name]必须实现表[nametbl_1]的分区,每个实例服务器都必须选择一个子分区(或其中一个本地实例服务器)来单独分区。”
常见案例
此错误消息主要发生在MySQL使用分片技术时,每个实例服务器必须在表实例上选择一个不同的子分区。当服务器尝试访问的分区已经被另一个实例服务器选择时,这可能会出现此错误消息。
解决方法
若遇到ER_IB_MSG_677消息,需根据提异常消息提供相应的表名,进行检查哪个实例上已经分配到了这个分区,针对被其他实例占用的分区,可以做如下操作
1. 对于表上实例的分区,一般服务器重启以后,实例上分区会随机分配,如果发现表已经被另一个实例服务器占用,可以尝试重启服务器,看能否分配成功。
2. 在MySQL的表上,添加或删除分区,重新进行分区计算,每个实例服务器都可以通过重新分区获得一个新的可用分区。
3. 停止一部分服务器实例来解决,把不必要的所有实例停掉,只启动其中一个实例,最后再启动其他实例服务器,此时不会再报此错误。
4. 临时停止另一个实例服务器,释放另一个实例服务器占用的表实例,使用本实例正常使用。
5. 根据实际情况及要求,我们也可以更改客户端访问表的权限,采用不同的实例,从而避免此错误消息。