У меня есть таблица, первичный ключ которой используется в нескольких других таблицах и имеет несколько внешних ключей для других таблиц.
CREATE TABLE location (
locationID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
...
) ENGINE = InnoDB;
CREATE TABLE assignment (
assignmentID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
locationID INT NOT NULL,
FOREIGN KEY locationIDX (locationID) REFERENCES location (locationID)
...
) ENGINE = InnoDB;
CREATE TABLE assignmentStuff (
...
assignmentID INT NOT NULL,
FOREIGN KEY assignmentIDX (assignmentID) REFERENCES assignment (assignmentID)
) ENGINE = InnoDB;
Проблема в том, что когда я пытаюсь удалить один из столбцов внешнего ключа (то есть locationIDX), он выдает ошибку.
«ОШИБКА 1025 (HY000): ошибка при переименовании»
Как я могу удалить столбец в таблице назначений выше, не получая эту ошибку?
mysql
foreign-keys
constraints
mysql-error-1025
Нарисовался
источник
источник
SHOW CREATE TABLE footable;
чтобы увидеть, как называется ограничение. Это не название колонки как таковой. Спасибо за ответ!Внешние ключи предназначены для обеспечения целостности данных, поэтому вы не можете удалить столбец, если он является частью внешнего ключа. Вам нужно сначала сбросить ключ.
Я думаю, что следующий запрос сделает это:
источник
Как все говорили выше, вы можете легко удалить FK. Однако я только что заметил, что в какой-то момент может быть необходимо сбросить сам ключ. Если у вас есть сообщение об ошибке для создания другого индекса, такого как последний, я имею в виду с тем же именем, было бы полезно удалить все, что связано с этим индексом.
источник
Проверьте, что является именем CONSTRAINT и именем FOREIGN KEY:
Удалите имя CONSTRAINT и имя внешнего ключа:
Надеюсь это поможет!
источник
Вот способ снять ограничение внешнего ключа, это будет работать. ALTER TABLE
location
.location_id
КАПЛЯТЬ ИНОСТРАННЫЙ КЛЮЧlocation_ibfk_1
;источник
Эй, я следовал некоторой последовательности выше и нашел какое-то решение.
Вы получите FK Constrain Name как
Теперь вам нужно убрать это ограничение. изменить таблицу Commantd
Затем опустите столбец таблицы,
источник
Обычно вы получаете эту ошибку, если ваши таблицы используют движок InnoDB. В этом случае вам придется удалить внешний ключ, а затем выполнить изменение таблицы и удалить столбец.
Но сложность заключается в том, что вы не можете удалить внешний ключ, используя имя столбца, но вместо этого вам придется найти имя, используемое для его индексации. Чтобы найти это, выполните следующую команду:
ПОКАЗАТЬ СОЗДАТЬ СТОЛ РЕГИОНА; Это должно показать вам строку, в левом верхнем углу нажмите опцию +, нажмите полнотекстовую кнопку raio, затем нажмите go. Там вы получите название индекса, что-то вроде этого:
CONSTRAINT region_ibfk_1 FOREIGN KEY (country_id) ССЫЛКИ country (id) ON УДАЛИТЬ НЕТ ДЕЙСТВИЙ, ОБНОВЛЕНИЕ НЕТ ДЕЙСТВИЙ Теперь просто введите:
изменить область таблицы для удаления внешнего ключа region_ibfk_1;
или
проще просто набрать: - изменить таблицу TableName удалить внешний ключ TableName_ibfk_1 ;
помните, единственное, что нужно добавить _ibfk_1 после вашего имени таблицы, чтобы сделать так: - TableName _ibfk_1
источник
Вы не можете удалить столбец внешнего ключа, потому что на него ссылаются из таблицы
assignmentStuff
. Поэтому сначала вы должны удалить ограничение внешнего ключаassignmentStuff.assignmentIDX
.Подобный вопрос уже задавался здесь . Проверьте также здесь для получения дополнительной информации.
источник
Попробуй это:
источник
шаг 1:
show create table vendor_locations;
шаг 2:
ALTER TABLE vendor_locations drop foreign key vendor_locations_ibfk_1;
это сработало для меня.
источник
сначала нужно получить реальное имя ограничения по этому запросу
Этот запрос приведет к ограничению имени внешнего ключа, теперь под запросом он будет удален.
последнее число в названии ограничения зависит от того, сколько внешних ключей у вас в таблице
источник