Итак, я пытаюсь добавить первичный ключ к одной из таблиц в моей базе данных. Сейчас у него есть первичный ключ:
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.
Ответ 1
Возможно, есть другая таблица с внешним ключом, ссылающаяся на первичный ключ, который вы пытаетесь изменить.
Чтобы узнать, какая таблица вызвала ошибку, вы можете запустить SHOW ENGINE INNODB STATUS
, а затем посмотреть раздел LATEST FOREIGN KEY ERROR
.
Ответ 2
Как уже было сказано, вам нужно сначала удалить FK. На Mysql выполните следующие действия:
ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;
ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
Ответ 3
Для тех, кто попадает на этот вопрос через google... эта ошибка также может произойти, если вы попытаетесь переименовать поле, действующее как внешний ключ.
Ответ 4
Чтобы обойти это в PHPMyAdmin или MySQL, сначала удалите ограничение внешнего ключа перед переименованием атрибута.
(Для пользователей PHPMyAdmin: Чтобы удалить ограничения FK в PHPMyAdmin, выберите атрибут, затем нажмите "Вид отношения" рядом с "Просмотр печати" на панели инструментов ниже структуры таблицы)
Ответ 5
Если вы пытаетесь удалить столбец, который является FOREIGN KEY, вы должны найти правильное имя, которое не является именем столбца. Например: если я пытаюсь удалить поле сервера в таблице Alarms, которая является внешним ключом в таблице серверов.
-
SHOW CREATE TABLE alarm;
Найдите строку CONSTRAINT `server_id_refs_id_34554433` FORIEGN KEY (`server_id`) REFERENCES `server` (`id`)
.
-
ALTER TABLE `alarm` DROP FOREIGN KEY `server_id_refs_id_34554433`;
-
ALTER TABLE `alarm` DROP `server_id`
Это приведет к удалению сервера внешнего ключа из таблицы Alarms.
Ответ 6
У меня была эта проблема, это для внешнего ключа
Нажмите Relation View
(например, изображение ниже), затем найдите имя поля, которое вы собираетесь удалить, и в столбце Foreign key constraint (INNODB)
просто поставьте выбор впустую! Нет внешнего ключа.
![введите описание изображения здесь]()
Надеюсь, что это работает!
Ответ 7
Если вы добавляете внешний ключ и сталкиваетесь с этой ошибкой, это может быть значение в дочерней таблице не присутствует в родительской таблице.
Скажем, для столбца, в который должен быть добавлен внешний ключ, все значения установлены равными 0, и значение не доступно в таблице, на которую вы ссылаетесь.
Вы можете установить некоторое значение, которое присутствует в родительской таблице, а затем добавить для меня внешний ключ.