Я попробовал это в MySQL:
mysql> alter table region drop column country_id;
И получил это:
ERROR 1025 (HY000): Error on rename of './product/#sql-14ae_81' to
'./product/region' (errno: 150)
Любые идеи? Материал внешнего ключа?
mysql
mysql-error-1025
Трентон
источник
источник
Ответы:
Обычно вы получаете эту ошибку, если ваши таблицы используют движок InnoDB. В этом случае вам придется удалить внешний ключ, а затем выполнить изменение таблицы и удалить столбец.
Но сложность заключается в том, что вы не можете удалить внешний ключ, используя имя столбца, но вместо этого вам придется найти имя, используемое для его индексации. Чтобы найти это, выполните следующую команду:
Это должно показать вам имя индекса, примерно так:
Теперь просто оформите:
И, наконец,
И вам хорошо идти!
источник
Это действительно ошибка внешнего ключа, вы можете узнать с помощью perror:
Чтобы узнать больше о том, что не удалось, вы можете использовать
SHOW ENGINE INNODB STATUS
и найти раздел LATEST FOREIGN KEY ERROR, в котором содержатся подробности о том, что не так.В вашем случае это, скорее всего, причина, что что-то ссылается на столбец country_id.
источник
Вы также можете получить эту ошибку, пытаясь удалить несуществующий внешний ключ. Поэтому при удалении внешних ключей всегда проверяйте, действительно ли они существуют.
Если внешний ключ существует, и вы все еще получаете эту ошибку, попробуйте следующее:
// Удалите внешний ключ здесь!
Это всегда помогает мне :)
источник
Просто запустите запрос на изменение таблицы, используя «KEY» вместо «FOREIGN KEY» в операторе удаления. Я надеюсь, что это поможет решить проблему, и уберет ограничение внешнего ключа, и вы сможете изменить столбцы таблицы и удалить таблицу.
здесь
DROP KEY
вместо того , чтобыDROP FOREIGN KEY
,надеюсь, это поможет.
Спасибо
источник
Я знаю, что это старый пост, но это первый удар по всем любимым поисковым системам, если вы ищете ошибку 1025.
Тем не менее, есть простой «взлом» для исправления этой проблемы:
Перед выполнением вашей команды необходимо отключить проверку ограничений внешнего ключа с помощью этой команды:
Тогда вы сможете выполнить свою команду (ы).
После того, как вы закончите, не забудьте снова включить проверку ограничений внешнего ключа, используя эту команду:
Удачи в ваших усилиях.
источник
У меня были похожие проблемы однажды. Я удалил первичный ключ из ТАБЛИЦЫ A, но когда я пытался удалить столбец внешнего ключа из таблицы BI, была показана та же самая ошибка выше.
Вы не можете удалить внешний ключ, используя имя столбца, и чтобы обойти это в PHPMyAdmin или MySQL, сначала удалите ограничение внешнего ключа перед переименованием или удалением атрибута.
источник
Посмотрите файл ошибок для вашей базы данных mysql. В соответствии с ошибкой # 26305 мой sql не дает вам причину. Эта ошибка существует с MySQL 4.1 ;-)
источник
Если вы используете такой клиент, как MySQL Workbench, щелкните правой кнопкой мыши нужную таблицу, из которой необходимо удалить внешний ключ, затем выберите вкладку внешнего ключа и удалите индексы.
Затем вы можете выполнить запрос следующим образом:
источник
Вероятно, существует другая таблица с внешним ключом, ссылающимся на первичный ключ, который вы пытаетесь изменить.
Чтобы узнать, какая таблица вызвала ошибку, вы можете запустить,
SHOW ENGINE INNODB
STATUS
а затем посмотрите наLATEST FOREIGN KEY ERROR
разделИспользуйте SHOW CREATE TABLE категории, чтобы показать имя ограничения.
Скорее всего это будет category_ibfk_1
Используйте имя, чтобы сначала удалить внешний ключ, а затем столбец:
источник
дела
перед операцией тоже можно сделать свое дело.
источник
Я думаю, проблема ограничения внешнего ключа. Используется ли country_id как внешний ключ в другой таблице?
Я не гуру БД, но я думаю, что решил проблему, подобную этой (где было ограничение fk), удалив fk, выполнив изменения таблицы, а затем переделав fk.
Мне будет интересно услышать, каков будет результат - иногда mysql довольно загадочен.
источник
В моем случае я использовал MySQL Workbench и столкнулся с той же проблемой, когда отбрасывал один из моих столбцов в таблице. Я не смог найти название внешнего ключа. Я выполнил следующие шаги, чтобы решить проблему:
Rt. щелкните по своей схеме и выберите «инспектор схемы». Это дает вам различные таблицы, столбцы, индексы и т. Д.
Перейдите на вкладку «Индексы» и найдите имя столбца под столбцом «Столбец». Найдя, проверьте имя таблицы для этой записи под именем столбца «Таблица». Если он соответствует имени нужной вам таблицы, запишите имя внешнего ключа из столбца с именем «Имя».
Теперь выполните запрос: ALTER table tableNamexx DROP KEY foreignKeyName;
Теперь вы можете выполнить оператор сброса, который будет выполнен успешно.
источник
Я получил эту ошибку с MySQL 5.6, но это не имеет ничего общего с внешними ключами. Это было на машине с Windows 7 Professional, действующей в качестве сервера в небольшой локальной сети.
Клиентское приложение выполняло пакетную операцию, которая создает таблицу, заполняет ее некоторыми внешними данными, затем запускает запрос, объединяющий постоянные таблицы, а затем удаляет «временную» таблицу. Этот пакет делает это примерно 300 раз, и эта конкретная процедура выполнялась неделя за неделей в течение нескольких лет, когда внезапно мы получаем ошибку 1025, Невозможно переименовать проблему в случайной точке в пакете.
В моем случае приложение использовало 4 оператора DDL: CREATE TABLE, затем 3 CREATE INDEX, внешнего ключа нет. Однако только 2 из этих индексов фактически создаются, и фактический файл таблицы .frm был переименован в точке сбоя.
Моим решением было избавиться от отдельных операторов CREATE INDEX и создать их с помощью оператора CREATE TABLE. Это на момент написания статьи решило проблему для меня и моей помощи, когда кто-то почесал голову, когда нашел эту ветку.
источник
averageRatings = FOREACH groupedRatings GENERATE группа AS movieID, AVG (ratings.rating) AS avgRating, COUNT (ratings.rating) AS numRatings;
Если вы используете какую-либо команду, как указано выше, вы должны использовать группу маленькими буквами. Это может решить вашу проблему, это решило мою. По крайней мере, в сценарии PIG.
источник