У меня есть таблица в InnoDB, которая использует ForeignKey на основе VARCHAR:
CREATE TABLE `portal_equity` (
`isin` varchar(12) NOT NULL,
....,
PRIMARY KEY (`isin`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Другая таблица имеет ограничение ForeignKey для этой таблицы:
CONSTRAINT `equity_id_refs_isin_2581bb1d` FOREIGN KEY (`equity_id`) REFERENCES `portal_equity` (`isin`)
Мне нужно было изменить длину столбца VARCHAR с первичным ключом, поэтому я и сделал. Теперь я продолжаю получать следующую ошибку целостности каждый раз, когда хочу сослаться на строку из таблицы «portal_equity», где isin превышает исходную длину 12.
Сбой ограничения внешнего ключа для таблицы investtor
. portal_equitypastvalue
:
ОГРАНИЧЕНИЕ equity_id_refs_isin_7eed44e7
ИНОСТРАННЫЙ КЛЮЧ (equity_id
) ССЫЛКИ portal_equity
(isin
)
Попытка добавить в дочернюю таблицу, в индекс portal_equitypastvalue_equity_id_6e7526e1
кортеж:
DATA TUPLE: 3 поля;
0: лен 12; шестнадцатеричный 304c55303332333133343030; asc 0LU032313400 ;; 1: лен 3; гекс 8fb578; asc x ;; 2: лен 4; гекс 8001398а; asc 9 ;;
Но в родительской таблице investtor
. portal_equity
, в индексе PRIMARY
наиболее близким совпадением, которое мы можем найти, является запись:
ФИЗИЧЕСКАЯ ЗАПИСЬ: n_fields 9; компактный формат; биты информации 0
0: лен 13; шестнадцатеричный 304c5530333233313334303036; asc 0LU0323134006 ;; 1: лен 6; гекс 000000005139; asc Q9 ;; 2: лен 7; гекс 800000002d0110; asc - ;; 3: лен 4; гекс 61736466; asc asdf ;; 4: лен 4; гекс 80000050; asc P ;; 5: лен 3; гекс 736466; asc sdf ;; 6: лен 4; гекс 80000001; asc ;; 7: лен 2; гекс 4144; ASC AD ;; 8: лен 0; гекс; asc ;;
Нужно ли восстанавливать все ограничения на внешние ключи? Это кажется чрезмерным. Это поведение / ошибка задокументировано где-то?