Spec-Zone .ru
спецификации, руководства, описания, API
|
Если Вы получаете двойную ключевую ошибку при использовании ALTER TABLE
чтобы изменить набор символов или сопоставление символьного столбца,
причина или что новое сопоставление столбца отображает два ключа на то же самое значение или что таблица
повреждается. В последнем случае следует работать REPAIR TABLE
на таблице.
Если ALTER TABLE
умирает со следующей ошибкой, проблема может состоять в том что
MySQL, разрушенный во время более раннего ALTER
TABLE
работа и есть старая названная таблица A-
или xxx
B-
расположение вокруг: xxx
Error on rename of './database/name.frm'to './database/B-xxx
.frm' (Errcode: 17)
В этом случае пойдите в каталог данных MySQL и удалите все файлы, у которых есть имена, запускающиеся с A-
или B-
. (Можно хотеть переместить их в другое место
вместо того, чтобы удалить их.)
ALTER
TABLE
работы следующим образом:
Составьте новую названную таблицу A-
с требуемыми структурными изменениями. xxx
Скопируйте все строки от исходной таблицы до A-
. xxx
Переименуйте исходную таблицу к B-
. xxx
Переименовать A-
к Вашему исходному имени таблицы. xxx
Удалить B-
.xxx
Если что-то идет не так, как надо с работой переименования, MySQL пытается отменить изменения. Если что-то идет
серьезно неправильно (хотя это не должно произойти), MySQL может встать из-за старого стола как B-
. Простое переименовывает
табличных файлов на системном уровне, должен вернуть Ваши данные. xxx
Если Вы используете ALTER TABLE
на транзакционной таблице или если Вы используете Windows, ALTER
TABLE
разблокировал таблицу, если Вы сделали a LOCK TABLE
на этом. Это делается потому что InnoDB
и
эти операционные системы не могут отбросить таблицу, которая используется.