Я получил эту ошибку с MySQL 5.6, но она не имела ничего общего с внешними ключами. Это было на машине с Windows 7 Professional, действующей в качестве сервера в небольшой локальной сети.
Клиентское приложение выполняло пакетную операцию, которая создает таблицу, заполняет ее некоторыми внешними данными, затем запускает запрос, объединяющий постоянные таблицы, а затем отбрасывает «временную» таблицу. Эта партия делает это примерно 300 раз, и эта конкретная процедура выполнялась неделя за неделей в течение нескольких лет, когда внезапно мы получаем ошибку 1025, Невозможно переименовать проблему в случайной точке в пакете.
В моем случае приложение использовало 4 оператора DDL: CREATE TABLE, затем 3 CREATE INDEX, внешний ключ отсутствует. Однако только 2 индекса фактически созданы, и фактический файл таблицы .frm был переименован в точке сбоя.
Моим решением было избавиться от отдельных операторов CREATE INDEX и создать их с помощью оператора CREATE TABLE. Это на момент написания статьи решило проблему для меня и моей помощи, когда кто-то почесал голову, когда нашел эту ветку.