MySQL изменяет таблицу, генерирующую "ошибку при переименовании" - PullRequest
3 голосов
/ 18 января 2012

Вот распечатка моей ошибки:

mysql> ALTER TABLE Price DROP FOREIGN KEY Id
ERROR 1025 (HY000): Error on rename of '.\testdb\Price' to '.\t
estdb\#sql2-bcc-16' (errno: 152)

Я прочитал эту страницу , что говорит о том, что проблема может быть связана с оставшейся таблицей из более ранней таблицы измененийошибка, и рекомендует вам поискать в вашем каталоге данных и удалить любую таблицу с именем, таким как 'B-xxx.frm'.

Моя ошибка похожа на это, но нет '# sql2-bcc-16 'в моем каталоге данных.И в любом случае не будет никаких артефактов предыдущей неудачной таблицы изменений, потому что это всего лишь небольшая тестовая база данных, и я фактически не изменял никаких таблиц ранее.

РЕДАКТИРОВАТЬ: Подробнее см. Ниже.

Что я действительно хочу сделать, так это изменить идентификатор (первичный ключ) в другой таблице на SMALLINT (вместо TINYINT).Однако ИД этой телефонной таблицы является внешним ключом, ссылающимся на ИД в другой таблице.Итак, я считаю, что мне нужно удалить внешний ключ этой таблицы, прежде чем приступить к смене типа в первичной таблице.Я надеюсь, что это понятно.

РЕДАКТИРОВАТЬ 2: Таблицы.

Продажа - имеет идентификатор TINYINT NOT NULL, первичный ключ (Id)

Телефон - имеет идентификатор TINYINT NOT NULL,ИНОСТРАННЫЙ КЛЮЧ (Id) ССЫЛКИ Продажа (Id)

Я бы хотел, чтобы все идентификаторы в моей базе данных были SMALLINT, а не TINYINT.Это моя текущая ситуация.

1 Ответ

1 голос
/ 18 января 2012

попробуй с mysql> ALTER TABLE Price DROP Id

Надеюсь, это сработает ... Удачи

Я попробовал с тобой запрос mysql> ALTER TABLE Price DROP FOREIGN KEY Id

Он выполняется, но не сработал!!!

Обновление:

Использовать следующие запросы ...

mysql> ALTER TABLE Price MODIFY Id SMALLINT

mysql> ALTER TABLE Sale MODIFY Id SMALLINT

mysql> ALTER TABLE Phone MODIFY Id SMALLINT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...