문제

테이블을 만드는 데 어려움이 있고 무엇이 잘못되었는지 이해가 안 돼요. 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을 다시 경감 한 다음 수동으로 인덱스와 외국의 주요 제약 조건을 다시 제작하는 것입니다. 필요한 경우.

나는 다른 테이블에서 같은 이름으로 제약을 받았습니다. 구속 조건의 이름을 변경해보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top