Подтвердить что ты не робот

Невозможно установить отношение внешнего ключа

У меня есть проблема с MySQL Workbench, поскольку иногда я не могу устанавливать внешние ключи при создании таблиц. Я говорю иногда, потому что это не всегда так. Дело в том, что когда я вхожу в FK и выбираю ссылочную таблицу, я не могу выбрать столбец с ссылкой. Я не могу щелкнуть этот флажок, и выпадающий список пуст. Я не могу понять, в чем проблема, потому что я не вижу реального отличия от FK, который работает. Я проверил тип данных, имя и т.д., И они верны. Я предоставлю SS для разработки. Зеленая отмеченная клавиша (id_hem) работает нормально, а красные метки - это те, которые этого не делают. Screenshot of WB

4b9b3361

Ответ 1

У меня была та же проблема, и проблема была во внешних индексах. MySQL workbench иногда генерирует слишком длинные имена для индексов fk. Ручная коррекция помогает.

Ответ 2

Я знаю, что это старый, но обычными виновниками являются флаг Non Null и Unsigned. Убедитесь, что они совпадают с ними в столбце внешнего ключа, если столбец со ссылками содержит их.

Ответ 3

У меня была такая же проблема.. тогда я проверил две таблицы. Проблема была в типе, она должна быть сопоставлена ​​в обеих двух таблицах.

если в столбце таблицы foralda id_familjer есть (INT)
в столбце таблицы fkblixten id_familjer также должен быть (INT). если два типа данных не совпадают, то MySQL Workbench не позволит выбрать столбец как внешний ключ.

Ответ 4

Это может быть также из-за разных сопоставлений. Просто проверьте, имеют ли эти 2 столбца одинаковые настройки.

В моем случае один был с

Таблица по умолчанию (с использованием общего utf8)

другой с

utf8_unicode_ci

Я установил эти 2 столбца с utf8_unicode_ci, и он работает.

Ответ 5

id_familjer - это первичный ключ? установите его.
В ссылочной колонке отображается только первичный ключ таблицы familjer.

Ответ 6

Внешний ключ должен иметь одинаковые константы, аналогичные Первичному ключу. Вы можете игнорировать AI, Primary Key. Если основной ключ имеет пользовательский интерфейс, у иностранного пользователя также должен быть пользовательский интерфейс

UI- > Unsigned Interger AI- > Автоматическое увеличение

Ответ 7

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

Например, сортировка столбцов My FK - "utf8", я также меняю ссылочную таблицу на "utf8". И это решило мою проблему.

Я надеюсь, что это будет полезно.

Ответ 8

Также, чтобы добавить мои два цента, это также происходит, если вы делаете диаграммы EER в том же пространстве имен баз данных, а две или более диаграммы содержат таблицу с тем же именем.

Итак, если вы попытались сделать отношение к таблице (которая также существует на другой диаграмме с тем же именем), она будет отображаться как дважды в справочной таблице, оба относятся к вашей текущей схеме диаграммы, и это не позволит вы должны установить отношение.

Решение состоит в том, чтобы переименовать таблицу на другой диаграмме.

Ответ 9

Убедитесь, что типы данных в обеих таблицах одинаковы, так как если один говорит int а другой - int(6) он не будет работать, так как у него есть ограничение. У меня была эта проблема, и именно так я ее исправил.

Ответ 10

В принятом ответе Ручная коррекция в том смысле: сначала создайте индекс для ссылочного ключа в ссылочной таблице. (Вы можете сделать это на вкладке индексов, доступных на каждой таблице). Затем, после нажатия на кнопку "Применить" (даже без выбора ссылочной колонки), измените код в приложении соответствующим образом.

пример:

ALTER TABLE 'SCHEMA_NAME'.'SECOND_TABLE_NAME' (we are creating foreign key in this second table)
ADD CONSTRAINT 'FOREIGN_KEY_NAME'
  FOREIGN KEY ('COLUMN_IN_SECOND_TABLE')
  REFERENCES 'SCHEMA_NAME'.'FIRST_TABLE_NAME' ('COLUMN_IN_FIRST_TABLE')
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;