#1025-ошибка при переименовании './ database / #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, выберите атрибут и нажмите кнопку "вид связи " рядом с" вид печати " на панели инструментов под структурой таблицы)
если вы пытаетесь удалить столбец, который является внешним ключом, вы должны найти правильное имя, а не имя столбца. Например: если я пытаюсь удалить поле сервера в таблице тревог, которая является внешним ключом к таблице серверов.
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`это приведет к удалению сервера внешних ключей из таблицы аварийных сигналов.
Если вы добавляете внешний ключ и столкнулись с этой ошибкой, это может быть значение в дочерней таблице отсутствует в родительской таблице.
допустим, для столбца, к которому должен быть добавлен внешний ключ, все значения установлены в 0, и значение недоступно в таблице, на которую вы ссылаетесь.
вы можете установить некоторое значение, которое присутствует в родительской таблице, а затем добавить внешний ключ работал для меня.

Comments