#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.

783   7  

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, выберите атрибут и нажмите кнопку "вид связи " рядом с" вид печати " на панели инструментов под структурой таблицы)

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

  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, и значение недоступно в таблице, на которую вы ссылаетесь.

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

Comments

    Ничего не найдено.