У меня есть таблица в InnoDB, в которой используется внешний ключ на основе 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
: CONSTRAINTequity_id_refs_isin_7eed44e7
FOREIGN KEY (equity_id
) REFERENCESportal_equity
(isin
) Попытка добавить в дочернюю таблицу индексportal_equitypastvalue_equity_id_6e7526e1
tuple: DATA TUPLE: 3 поля; 0: длина 12; шестнадцатеричный 304c55303332333133343030; по возрастанию 0LU032313400;; 1: длина 3; шестнадцатеричный 8fb578; по возрастанию х;; 2: длина 4; шестигранник 8001398а; восходящий 9 ;;Но в родительской таблице
investtor
.portal_equity
в индексеPRIMARY
ближайшим соответствием, которое мы можем найти, является запись: ФИЗИЧЕСКАЯ ЗАПИСЬ: n_fields 9; компактный формат; информационные биты 0 0: длина 13; шестнадцатеричный 304c5530333233313334303036; по возрастанию 0LU0323134006;; 1: длина 6; шестнадцатеричный 000000005139; возр Q9;; 2: длина 7; шестнадцатеричный 800000002d0110; восходящий - ;; 3: длина 4; шестнадцатеричный 61736466; по возрастанию asdf ;; 4: длина 4; шестнадцатеричный 80000050; возр. П;; 5: длина 3; шестнадцатеричный 736466; по возрастанию сдф ;; 6: длина 4; шестнадцатеричный 80000001; восходящий ;; 7: лен 2; шестнадцатеричный 4144; по возрастанию н.э.;; 8: длина 0; шестигранник; восходящий ;;
Нужно ли мне перегенерировать все ограничения внешнего ключа? Это кажется довольно чрезмерным. Это поведение/ошибка где-то задокументировано?