Ответ 1
Ошибка, которую вы указываете, предназначена только для отладки скомпилированных версий:
storage/innobase/handler/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);
}
Ошибка возникает при создании индекса и изменении структуры таблицы, это означает, что индекс не используется. Проверьте ошибки, предоставленные в файле mysqld.err, так как может быть больше ошибок, которые могут помочь определить, на какой стадии он находится.
Если ваш случай - это MySQL, скомпилированный с отладочными символами, вы, вероятно, обратите внимание на ошибку, указанную в вашем комментарии. В противном случае я предлагаю проанализировать, изменилась ли какая-либо другая транзакция в структуре таблицы, связанной с индексом во время транзакции (удалили ли вы индекс во время длительной транзакции? Был ли каталог поврежден во время операции?).