0

나는이MySQL의 오류 (150)는

CREATE TABLE IF NOT EXISTS `beta`.`msg_messages` (
    `id_msg` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT , 
    `id_user_from` BIGINT(20) UNSIGNED NOT NULL , 
    `subject` VARCHAR(200) NOT NULL , 
    `body` TEXT NOT NULL , 
    `date` DATETIME NOT NULL , 
    PRIMARY KEY (`id_msg`) , 
    INDEX fk_msg_messages_user (`id_user_from` ASC) , 
    INDEX fk_msg_messages_msg_messages_users (`id_msg` ASC) , 
    CONSTRAINT `fk_msg_messages_user` 
    FOREIGN KEY (`id_user_from`) 
    REFERENCES `beta`.`user` (`id`) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE, 
    CONSTRAINT `fk_msg_messages_msg_messages_users` 
    FOREIGN KEY (`id_msg`) 
    REFERENCES `beta`.`msg_messages_users` (`id_msg`) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE) 
ENGINE = InnoDB 

*있어 그리고 이것은 내 오류입니다. 이들은 내 사용자 및 msg_messages_users 테이블입니다. 모든 테이블을 검토 한 결과 오류가 표시되지 않습니다. 임 MysqlWorbench 작업 및이 잘못된 sintax 생성합니다. *

오류 1005 : 'beta.msg_messages'(errno : 150) 테이블을 만들 수 없습니다.

CREATE TABLE IF NOT EXISTS `beta`.`user` (
    `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT , 
    `username` VARCHAR(100) NOT NULL , 
    PRIMARY KEY (`id`) , 
ENGINE = InnoDB 
AUTO_INCREMENT = 87 
DEFAULT CHARACTER SET = utf8; 

CREATE TABLE IF NOT EXISTS `beta`.`msg_messages_users` (
     `id` BIGINT UNSIGNED NOT NULL , 
     `id_usr_to` BIGINT(20) UNSIGNED NOT NULL , 
     `id_msg` BIGINT(20) UNSIGNED NOT NULL , 
     `status` TINYINT NOT NULL DEFAULT 0 , 
     `date` DATETIME NOT NULL , 
     PRIMARY KEY (`id`) , 
     INDEX fk_msg_messages_users_user (`id_usr_to` ASC) , 
     CONSTRAINT `fk_msg_messages_users_user` 
     FOREIGN KEY (`id_usr_to`) 
     REFERENCES `beta`.`user` (`id`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 
+0

아마도'id_msg BIGINT를 (20) UNSIGNED NOT NULL AUTO_INCREMENT'는 단지'id_msg BIGINT (20) UNSIGNED NOT NULL'이어야합니다. 자동 증분이 다른 테이블을 참조하는 방법은 무엇입니까? – SparKot

+0

"SHOW ERRORS"및 "SHOW ENGINE INNODB STATUS"에 대한 출력을 게시하십시오. autoincrement는 합법적입니다 (확실히 이상 하긴하지만). 문제는 fk_msg_messages_msg_messages_users 제약 조건 생성에 있습니다 (제거하면 테이블이 생성됩니다) – Leo

+0

140215 17:56:57 테이블 베타/msg_messages의 외래 키 제약 조건 오류 : FOREIGN KEY ('id_msg') 참조'beta' .'msg_messages_users' ('id_msg') ON)의 ENGINE = InnoDB의를 UPDATE CASCADE ON CASCADE를 삭제 : 테이블에 참조 열이 첫 번째 열로 표시 참조 된 테이블에 인덱스 또는 열 유형 를 찾을 수 없습니다 참조 된 테이블이 제약 조건과 일치하지 않습니다. – Julioarhernandez

답변

0

임 ... 내가 잘못된 테이블의 외래 키를 선언했다 바보 ..

CREATE TABLE IF NOT EXISTS `beta`.`msg_messages` (
    `id_msg` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT , 
    `id_user_from` BIGINT(20) UNSIGNED NOT NULL , 
    `subject` VARCHAR(200) NOT NULL , 
    `body` TEXT NOT NULL , 
    `date` DATETIME NOT NULL , 
    PRIMARY KEY (`id_msg`) , 
    INDEX fk_msg_messages_user (`id_user_from` ASC) , 
    CONSTRAINT `fk_msg_messages_user` 
    FOREIGN KEY (`id_user_from`) 
    REFERENCES `beta`.`user` (`id`) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE) 
ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `beta`.`msg_messages_users` (
    `id_msg` BIGINT(20) UNSIGNED NOT NULL , 
    `id_usr_to` BIGINT(20) UNSIGNED NOT NULL , 
    `status` TINYINT NOT NULL DEFAULT 0 , 
    `date` DATETIME NOT NULL , 
    INDEX id_msg (`id_msg` ASC) , 
    INDEX fk_msg_messages_users_msg_messages (`id_msg` ASC) , 
    INDEX fk_msg_messages_users_user (`id_usr_to` ASC) , 
    CONSTRAINT `fk_msg_messages_users_msg_messages` 
    FOREIGN KEY (`id_msg`) 
    REFERENCES `beta`.`msg_messages` (`id_msg`) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE, 
    CONSTRAINT `fk_msg_messages_users_user` 
    FOREIGN KEY (`id_usr_to`) 
    REFERENCES `beta`.`user` (`id`) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE) 
ENGINE = InnoDB; 

감사 모든