MySQL Error 150, 테이블을 만들 수 없습니다
-
22-07-2019 - |
문제
테이블을 만드는 데 어려움이 있고 무엇이 잘못되었는지 이해가 안 돼요. phpmyadmin은 기본 키 선언 옆에 오류 표시기를 설정합니다 ... 왜 이것이 잘못된 이유를 알지 못합니다 ...
이 테이블은 어린이 테이블로, 다른 테이블과 일대일 식별 관계가 있습니다.
CREATE TABLE IF NOT EXISTS `ruilen`.`Voorwerpen` (
`voorwerpen_id` INT NOT NULL AUTO_INCREMENT ,
`naam` VARCHAR( 45 ) NOT NULL ,
`beschrijving` VARCHAR( 45 ) NULL ,
`Gebruikers_gebruiker_id` INT NOT NULL ,
PRIMARY KEY ( `voorwerpen_id` , `Gebruikers_gebruiker_id` ) ,
CONSTRAINT `fk_Voorwerpen_Gebruikers1` FOREIGN KEY ( `Gebruikers_gebruiker_id` ) REFERENCES `ruilen`.`Gebruikers` (
`gebruiker_id`
) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE = InnoDB;
MySQL said: Documentation
#1005 - Can't create table 'ruilen.voorwerpen' (errno: 150)
편집 : 이것은 내가 찾을 수있는 오류 코드의 모든 문서입니다. 링크
edit2 : 그림이 제거되었습니다
edit3 :
CREATE TABLE `gebruikers` (
`gebruiker_id` int(11) NOT NULL,
`naam` varchar(45) NOT NULL,
`straat` varchar(45) NOT NULL,
`gemeente` varchar(45) NOT NULL,
`mail` varchar(45) NOT NULL,
`beschrijving` varchar(45) DEFAULT NULL,
PRIMARY KEY (`gebruiker_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
해결책
확인하십시오 Gebruikers_gebruiker_id
그리고 Gebruikers
.gebruiker_id
동일한 데이터 유형이 있습니다.
또한 확인하십시오 Gebruikers
.gebruiker_id
a PRIMARY KEY
안에 Gebruikers
업데이트:
당신은 가지고 있습니다 ON DELETE SET NULL
당신의 동안 정의되었습니다 Gebruikers_gebruiker_id
정의됩니다 NOT NULL
.
수정하십시오 (변경하십시오 ON DELETE CASCADE
또는 조항을 제거하면 참조를 만들 수 있습니다.
다른 팁
IM 내 경우는 일반적으로 데이터 유형 불일치 때문입니다. 둘 다 둘 다인 int 검사인지 기억하십시오. 서명되지 않았습니다 아니면 아니에요
이것은 MySQL의 버그가 많은 특성이 아닙니다. 이에 대한 두 가지 가능한 이유가있을 수 있습니다! 1) PK와 FK의 데이터 유형은 일치하지 않습니다. 2)이 오류는 인덱스를 명시 적으로 정의 해야하는 4.1 이전의 버전에서 발생할 수 있습니다.
추가해야 할 또 하나의 이유 :
다른 숯이나 엔진 도이 문제를 일으킬 것입니다
내 사람은 MySQL의 매우 버그가 많은 특성을 경험합니다. 그리고 가장 번거로움은 테이블 구조와 데이터를 덤프 한 다음 테이블을 버린 다음 덤프에서 SQL을 다시 경감 한 다음 수동으로 인덱스와 외국의 주요 제약 조건을 다시 제작하는 것입니다. 필요한 경우.
나는 다른 테이블에서 같은 이름으로 제약을 받았습니다. 구속 조건의 이름을 변경해보십시오.