您指出的错误仅用于调试编译版本:
存储/innobase/处理程序/ha_innodb.cc
if (!m_prebuilt->index_usable) {
if (dict_index_is_corrupted(m_prebuilt->index)) {
// Code removed for clarity
}
} else {
push_warning_printf(
m_user_thd, Sql_condition::SL_WARNING,
HA_ERR_TABLE_DEF_CHANGED,
"InnoDB: insufficient history for index %u",
keynr);
}
/* The caller seems to ignore this. Thus, we must check
this again in row_search_for_mysql(). */
DBUG_RETURN(HA_ERR_TABLE_DEF_CHANGED);
}
Run Code Online (Sandbox Code Playgroud)
该错误发生在索引创建过程中,表结构发生变化时,说明该索引不可用。请检查 mysqld.err 文件中提供的错误,因为可能存在更多错误,可以帮助确定它处于哪个阶段。
如果您的案例是使用调试符号编译的 MySQL,您可能会注意到评论中报告的错误。否则,我会建议检查是否有任何其他事务在事务期间碰巧更改了与索引相关的表结构(您是否在长事务期间删除了索引?操作期间目录是否已损坏?)。