У меня есть проблема с MySQL Workbench, поскольку иногда я не могу устанавливать внешние ключи при создании таблиц. Я говорю иногда, потому что это не всегда так. Дело в том, что когда я вхожу в FK и выбираю ссылочную таблицу, я не могу выбрать столбец с ссылкой. Я не могу щелкнуть этот флажок, и выпадающий список пуст. Я не могу понять, в чем проблема, потому что я не вижу реального отличия от FK, который работает. Я проверил тип данных, имя и т.д., И они верны. Я предоставлю SS для разработки. Зеленая отмеченная клавиша (id_hem) работает нормально, а красные метки - это те, которые этого не делают.
Невозможно установить отношение внешнего ключа
Ответ 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;