# 1025 - Ошибка при переименовании './database/#sql-2e0f_1254ba7' в './database/table' (номер ошибки: 150) - PullRequest
76 голосов
/ 02 ноября 2010

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

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.

Ответы [ 7 ]

133 голосов
/ 02 ноября 2010

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

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

31 голосов
/ 05 сентября 2013

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

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

ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
22 голосов
/ 20 июня 2013

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

13 голосов
/ 01 декабря 2013

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

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

4 голосов
/ 29 февраля 2016

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

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

enter image description here

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

4 голосов
/ 19 ноября 2014

Если вы пытаетесь удалить столбец, который является ИНОСТРАННЫМ КЛЮЧОМ, вы должны найти правильное имя, которое не является именем столбца.Например: если я пытаюсь удалить поле сервера в таблице сигналов тревоги, которое является внешним ключом к таблице серверов.

  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`

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

0 голосов
/ 18 ноября 2016

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

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

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

...