2017-01-03 2 views
0

MAC Sierra 10.12.2 mariaDB Vers 10.1.19 구문 분석 문은 쿼리 테이블 구문 창에서 잘라내어 붙여 넣기됩니다.mariaDB foreign key unformed - varchar가 서명/서명되지 않은 문제가 아닙니다.

첫 번째 테이블 :

CREATE TABLE `USAStates` (
    `state_id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT, 
    `state_abbrev` varchar(6) NOT NULL DEFAULT '', 
    `electoral_votes` smallint(2) DEFAULT '0', 
    `fed_reg` smallint(2) DEFAULT '0', 
    `econ_anal_reg` varchar(128) DEFAULT NULL, 
    `FRB_district` varchar(128) DEFAULT NULL, 
    PRIMARY KEY (`state_id`,`state_abbrev`) 
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8; 

두 번째 테이블 : 명령 창에서 ALTER 문

CREATE TABLE `FRBCommentary` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `state_abbrev` varchar(6) NOT NULL DEFAULT '', 
    `FRB_district_rem` longtext, 
    PRIMARY KEY (`id`,`state_abbrev`) 
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8; 

결과; Querious 도구를 사용하여 동일한 결과 :

MariaDB [ESHOP]> 
    ALTER TABLE FRBCommentary 
    ADD CONSTRAINT FOREIGN KEY (state_abbrev) 
    REFERENCES USAStates (state_abbrev); 

ERROR 1005 (HY000)는 : 테이블 eshop를 만들 수 없습니다. #sql-74b_41 (errno를 : 150 "외래 키 제약 조건이 잘못 형성된다") MariaDB [이숍]> MS 액세스에 매우 유능 할 ... 년 후 진짜 배우려고 노력하고 사용

.

+0

'id'를 없애고'state_abbrev'를'PRIMARY KEY'로 만드십시오. –

답변

0

참조 된 열에 인덱스가 필요합니다.

ALTER TABLE USAStates ADD INDEX (state_abbrev); 
+0

감사합니다. –