«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему я получаю ошибку MySQL 1215: «Невозможно добавить ограничение внешнего ключа»?

Почему я получаю ошибку MySQL 1215: «Невозможно добавить ограничение внешнего ключа»?

Опубликовано 4 ноября 2024 г.
Просматривать:650

 Why Am I Getting MySQL Error 1215: \

Ошибка MySQL 1215: «Невозможно добавить ограничение внешнего ключа»

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

Согласованность механизма

  • Для обеих задействованных таблиц необходимо использовать механизм InnoDB.

Тип данных и длина

  • Типы данных и длины обоих полей должны точно совпадать. Например, если поле ссылки — VARCHAR(20), поле внешнего ключа также должно быть VARCHAR(20).

Сортировка

  • Параметры сортировки указывают набор символов и правила сортировки. Оба поля должны использовать одинаковые параметры сортировки, например utf8.

Уникальность

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

Обработка значений NULL

  • Убедитесь, что вы не определили условие SET NULL, когда некоторые столбцы, на которые имеются ссылки, объявлены NOT NULL.

Дополнительные симптомы

Если ошибка не устранена, запустите команду SHOW ENGINE INNODB STATUS; чтобы раскрыть более конкретные детали.

Неверное утверждение

Предоставленный оператор SQL создает таблицу с именем «курс» с ограничением внешнего ключа, ссылающимся на таблицу «отдел» в Поле «имя_отдела». Однако это утверждение неверно, поскольку в нем отсутствует спецификация типа данных для поля «имя_отдела». Чтобы исправить это, оператор следует изменить следующим образом:

create table course (
    course_id varchar(7),
    title varchar(50),
    dept_name varchar(20),
    credits numeric(2,0),
    primary key(course_id),
    foreign key (dept_name) references department(dept_name)
);
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3