Код ошибки Mysql InnoDB # 1025

#mysql #innodb

#mysql #innodb

Вопрос:

Мы используем Mysql 5.1 на наших производственных серверах и пытаемся выполнить запрос alter, чтобы изменить тип данных столбца с tinytext на varchar(200). При выполнении запроса alter мы видим эту ошибку :-

#1025 — Ошибка при переименовании ‘./ msging/#sql-123b_ab7634’ в ‘./ msging / исходящие’ (ошибка: -1)

Форумы MySQL предполагают, что эта ошибка может быть вызвана ограничениями внешнего ключа. Но в нашей схеме нет внешних ключей. Журналы ошибок mysql показывают указанную ниже ошибку.Мы прошли по ссылке, указанной в заявлении об ошибке, но не смогли найти ничего полезного. Есть идеи, что может пойти не так?

InnoDB: Ошибка: ‘./msging/ outboxes.ibd’ уже находится в кэше памяти табличного
пространства 111001 12:40:18 InnoDB: ошибка при переименовании таблицы, не удается переименовать msging . #sql-123b_ab4828 to msging . outboxes
111001 12:40:18 InnoDB: Ошибка: таблица msging . outboxes не существует во внутреннем словаре InnoDB
InnoDB: data, хотя MySQL пытается его удалить.
InnoDB: Вы скопировали файл .frm таблицы
в каталог базы данных InnoDB: MySQL из другой базы данных?
InnoDB: вы можете обратиться за дополнительной помощью к
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/innodb-troubleshooting.html

Ответ №1:

При переименовании таблицы с помощью ALTER TABLE , вот что происходит:

  1. Таблица копируется в новый файл со случайным именем файла.
  2. В новый файл внесены изменения.
  3. Старая таблица переименована с использованием случайного временного имени файла.
  4. Новая таблица переименована, чтобы занять место старого файла.
  5. Старая таблица удалена.

Смотрите эту ссылку для получения более подробной информации: http://www.xaprb.com/blog/2006/08/22/mysqls-error-1025-explained /

Вы можете использовать innotop для получения более подробной информации об ошибке: http://code.google.com/p/innotop /