#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.
-
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`
это удалит сервер внешнего ключа из таблицы аварийных сигналов.
у меня была эта проблема, это для внешнего ключа
нажмите на кнопку Relation View
(как на изображении ниже) затем найдите имя поля, которое вы собираетесь удалить, и под Foreign key constraint (INNODB)
столбец, просто поместите select в ничто! Означает отсутствие внешнего ключа
надеюсь, что это сработает!
Если вы добавляете внешний ключ и столкнулись с этой ошибкой, это может быть значение в дочерней таблице отсутствует в родительской таблице.
предположим, что для столбца, к которому должен быть добавлен внешний ключ, все значения установлены в 0, а значение недоступно в таблице, на которую вы ссылаетесь.
вы можете установить некоторое значение, которое присутствует в родительской таблице,а затем добавить внешний ключ для меня.