Почему внешний ключ не может быть VARCHAR?

0326bba208744bf6944c48dd6ffbda5b.png

В таблице "Клиенты" есть два ключевых поля код клиента (набор цифр и букв) и id клиента.

Я связываю ее с таблицей "Заказы 1С", туда перебрасываются два этих ключевых поля. Id клиента мне там не сильно нужен тк, принадлежность заказов я идентифицирую по коду клиента в 1С.

Почему MySQL не дает удалить id клиента и пишет ошибку?
#1025 - Error on rename of './odeon/#sql-ec9_68c' to './odeon/orders_1c' (errno: 150)
  • Вопрос задан
  • 659 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Поскольку в mysql внешних ключей архитектурно нет, а в innodb они прикручены как-то сбоку - сообщения об ошибках поражают своей бесполезностью. Как получить нормальные сообщения указано в мануале:
https://dev.mysql.com/doc/refman/5.6/en/innodb-for...
Foreign Key Usage and Error Information

You can obtain general information about foreign keys and their usage from querying the INFORMATION_SCHEMA.KEY_COLUMN_USAGE table, and more information more specific to InnoDB tables can be found in the INNODB_SYS_FOREIGN and INNODB_SYS_FOREIGN_COLS tables, also in the INFORMATION_SCHEMA database. See also Section 13.1.17.3, “Using FOREIGN KEY Constraints”.

In addition to SHOW ERRORS, in the event of a foreign key error involving InnoDB tables (usually Error 150 in the MySQL Server), you can obtain a detailed explanation of the most recent InnoDB foreign key error by checking the output of SHOW ENGINE INNODB STATUS.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AVKor
FK потомка должен соответствовать CK родителя.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы