나는 VARCHAR 기반 외래 키를 사용 InnoDB에있는 테이블이 :InnoDB의 :의 길이를 변경하기 VARCHAR 기본 키
CREATE TABLE `portal_equity` (
`isin` varchar(12) NOT NULL,
....,
PRIMARY KEY (`isin`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8
또 다른 테이블은 테이블에 외래 키 제약 조건이 있습니다
CONSTRAINT `equity_id_refs_isin_2581bb1d` FOREIGN KEY (`equity_id`) REFERENCES `portal_equity` (`isin`)
을 기본 키 VARCHAR 열의 길이를 변경해야하므로 그렇게했습니다. ISIN 테이블 investtor
실패 (12)
외래 키 제약 조건의 원래 길이를 초과하는 경우 지금은 다음 무결성 오류에게 나는 "portal_equity"테이블에서 행을 참조 할 때마다 점점 계속.
portal_equitypastvalue
: DATA 튜플 : CONSTRAINTequity_id_refs_isin_7eed44e7
FOREIGN KEY (equity_id
)는 인덱스에서 자식 테이블에 추가하려고portal_equity
(isin
)portal_equitypastvalue_equity_id_6e7526e1
튜플 참고 문헌 3 개 필드; 0 : len 12; 16 진수 304c55303332333133343030; 오름차순 0LU032313400 ;; 1 : len 3; 16 진수 8fb578; asc x ;; 2 : len 4; 16 진수 8001398a; 오름차순 9 ;;그러나 부모 테이블
investtor
.portal_equity
, 인덱스PRIMARY
에 가장 가까운 일치 항목은 다음과 같습니다. 물리적 기록 : n_fields 9; 소형 포맷; 정보 비트 0 0 : len 13; 16 진수 304c5530333233313334303036; 오름차순 0LU0323134006 ;; 1 : len 6; 16 진수 000000005139; 오름차순 Q9 ;; 2 : len 7; 16 진수 800000002d0110; 오름차순; 3 : len 4; 헥스 61736466; asc asdf ;; 4 : len 4; 16 진수 80000050; asc P ;; 5 : len 3; 헥스 736466; asc sdf ;; 6 : len 4; 16 진수 80000001; 오름차순; 7 : len 2; 16 진수 4144; 오름차순 AD; 8 : len 0; 16 진수; 오름차순;
모든 외래 키 제약 조건을 다시 생성해야합니까? 그것은 과도한 것처럼 보입니다. 이 동작/오류가 어딘가에 기록되어 있습니까?
실제로 FOREIGN KEY 제약 조건 자체는 업데이트 할 필요가 없습니다. 대신, 기본 키를 저장하는 자식 테이블의 실제 필드는 이전 길이를 가지며, 내가 완전히 놓친 것입니다. 이는 어리석은 일입니다. 나는 부분적으로 ORM을 비난한다. ORM은 자동적으로 이러한 외래 키 필드를 만들고 내 레이더에서 그들을 보호한다. – miracle2k