#1025-ошибка при переименовании './ база данных / #sql-2e0f 1254ba7 'to'./ база данных / таблица' (errno: 150)

поэтому я пытаюсь добавить первичный ключ в одну из таблиц в моей базе данных. Прямо сейчас он имеет первичный ключ, как это:

PRIMARY KEY (user_id, round_number)

где user_id-внешний ключ.

Я пытаюсь изменить его к этому:

PRIMARY KEY (user_id, round_number, created_at)

Я делаю это в phpmyadmin, нажав на значок первичного ключа в представлении структуры таблицы.

Это ошибка, я получаю:

#1025 - Error on rename of './database/#sql-2e0f_1254ba7' to './database/table' (errno: 150)

это база данных MySQL с InnoDB table engine.

7 ответов


вероятно, есть другая таблица с внешним ключом, ссылающимся на первичный ключ, который вы пытаетесь изменить.

чтобы узнать, какая таблица вызвала ошибку, вы можете запустить SHOW ENGINE INNODB STATUS а затем посмотрите на .


Как было сказано, вам нужно удалить FKs раньше. На Mysql сделайте это так:

ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;

ALTER TABLE `table_name` DROP INDEX `id_name_fk`;

для тех, кто попадает на этот вопрос через google... эта ошибка также может произойти при попытке переименовать поле, которое действует как внешний ключ.


чтобы обойти это в PHPMyAdmin или с MySQL, сначала удалите ограничение внешнего ключа перед переименованием атрибута.

(для пользователей PHPMyAdmin: чтобы удалить ограничения FK в PHPMyAdmin, выберите атрибут, затем нажмите "вид связи " рядом с" вид печати " на панели инструментов под структурой таблицы)


если вы пытаетесь удалить столбец, который является внешним ключом, вы должны найти правильное имя, а не имя столбца. Например: если я пытаюсь удалить поле сервера в таблице Alarms, которое является внешним ключом к таблице servers.

  1. SHOW CREATE TABLE alarm; Ищите CONSTRAINT `server_id_refs_id_34554433` FORIEGN KEY (`server_id`) REFERENCES `server` (`id`) линии.
  2. ALTER TABLE `alarm` DROP FOREIGN KEY `server_id_refs_id_34554433`;
  3. ALTER TABLE `alarm` DROP `server_id`

это удалит сервер внешнего ключа из таблицы аварийных сигналов.


у меня была эта проблема, это для внешнего ключа

нажмите на кнопку Relation View (как на изображении ниже) затем найдите имя поля, которое вы собираетесь удалить, и под Foreign key constraint (INNODB) столбец, просто поместите select в ничто! Означает отсутствие внешнего ключа

enter image description here

надеюсь, что это сработает!


Если вы добавляете внешний ключ и столкнулись с этой ошибкой, это может быть значение в дочерней таблице отсутствует в родительской таблице.

предположим, что для столбца, к которому должен быть добавлен внешний ключ, все значения установлены в 0, а значение недоступно в таблице, на которую вы ссылаетесь.

вы можете установить некоторое значение, которое присутствует в родительской таблице,а затем добавить внешний ключ для меня.