2015-01-09 2 views
0

나는 간단한 것을 놓치고 있습니다.외래 키 반환 단순 추가 # 1215 외래 키 제약 조건을 추가 할 수 없습니다.

RequestLog 테이블 :

CREATE TABLE `requestlog` (
`RequestID` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`RequestName` varchar(30) NOT NULL, 
`RequestData` varchar(150) NOT NULL, 
`RequestDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`Version` varchar(15) NOT NULL, 
PRIMARY KEY (`RequestID`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

ResponseLog 테이블 :

CREATE TABLE `responselog` (
`ResponseID` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`FK_RequestID` int(10) NOT NULL, 
`ResponseText` text NOT NULL, 
PRIMARY KEY (`ResponseID`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

무엇이다, 나를 쏘지 마세요

ALTER TABLE ResponseLog 
ADD FOREIGN KEY (FK_RequestID) REFERENCES RequestLog(RequestID) 

와 ResponseLog.FK_RequestID에 외부 키를 추가하려고 내가 빠졌어?

답변

1

ALTER TABLE 참조 표 ResponseLogRequestLog. CREATE TABLE 문은 requestlogresponselog이라는 테이블을 만듭니다. ALTER TABLE 문을 변경하여 대소 문자가 같은 테이블 식별자를 사용하도록하십시오.

또한 주요 문제 일 수 있으며 참조 된 필드의 데이터 유형이 다릅니다. 하나는 int이고 다른 하나는 부호없는 int입니다. 데이터 유형이 일치해야합니다. 그렇지 않으면 필드가 일치하지 않을 수 있습니다. MySQL은이 사실을 알고 있으며 깨진 외래 키를 만들지 못하게합니다.

+0

주요 문제는 데이터 유형이 일치하지 않습니다. 참조하는 열의 데이터 유형이 참조 된 열과 일치하지 * 않습니다. ** 'INT'**는 'INT UNSIGNED'**와 일치하지 않습니다. ** – spencer7593

+0

그래, 그게 내가 생각한거야. 테이블 이름 불일치가 너무 두드러졌습니다. – ragol

관련 문제