2012-06-25 2 views
0

이 오류의 원인은 무엇입니까?서버에서 SQL 스크립트 실행 중 오류 1005 : 테이블을 만들 수 없습니다. (오류 번호 : 150)

CREATE TABLE IF NOT EXISTS `myhotel`.`roomer` (
     `id` INT NOT NULL , 
     `name` VARCHAR(45) NOT NULL , 
     `start` DATE NOT NULL , 
     `finish` DATE NOT NULL , 
     `day` INT NOT NULL , 
     PRIMARY KEY (`id`) , 
     INDEX `fk_id` (`id` ASC) , 
     CONSTRAINT `fk_id` 
     FOREIGN KEY (`id`) 
     REFERENCES `myhotel`.`all_roomers` (`id_roomer`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `myhotel`.`all_roomers` (
    `id_roomer` INT NOT NULL , 
    `id_room` INT NOT NULL , 
    `status` TINYINT(1) NOT NULL , 
    INDEX `fk_id_room` (`id_room` ASC) , 
    PRIMARY KEY (`id_roomer`, `id_room`) , 
    CONSTRAINT `fk_id_room` 
    FOREIGN KEY (`id_room`) 
    REFERENCES `myhotel`.`room` (`id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `myhotel`.`room` (
    `id` INT NOT NULL AUTO_INCREMENT , 
    `number` INT NOT NULL , 
    `price` INT NOT NULL , 
    `capacity` INT NOT NULL , 
    `stars` INT NOT NULL , 
    `status` TINYINT(1) NOT NULL , 
    PRIMARY KEY (`id`)) 
ENGINE = InnoDB; 

내가 오류는 다음과 같습니다 서버 실행 SQL 스크립트

ERROR : 오류 1005 : 테이블 'myhotel.roomer'(errno를 : 150) 만들 수 없습니다

답변

0

을에 따르면 MySQL의 문서 (see here) :

If MySQL reports an error number 1005 from a CREATE TABLE statement, and the error message refers to error 150, table creation failed because a foreign key constraint was not correctly formed.

내가있을 수 있습니다 스크립트의 모습에서 말할 것

때문에 당신이 REFE을 사용하고있는 CREATE TABLE 문 테이블이 만들어지기 전에 myhotel.all_roomers의 이름을 바꿉니다. 외래 키 참조를 만들기 전에 먼저 해당 테이블을 만들어야 할 것입니다.

또한 확실하지 않지만 기본 키뿐 아니라 foriegn 키로 id 열을 사용하는 것처럼 보입니다. 이 중 하나를 허용 할 수 있지만 그것이 잘못되었다는 설명서의 아무 곳이나 찾을 수 없습니다.

관련 문제