2011-07-27 3 views
0

안녕하세요, 사용자 정보를 보유하는 두 번째 사용자 이름과 암호를 보유한 두 개의 mysql 테이블이 있습니다. 이 테이블mysql foreign keys

CREATE TABLE IF NOT EXISTS `test`.`dbo.users` (
    `userId` INT(11) NOT NULL AUTO_INCREMENT , 
    `userUsername` VARCHAR(45) NULL , 
    `userPassword` VARCHAR(45) NULL , 
    `dbo.userProfiles_userProfileId` INT(11) NOT NULL , 
    PRIMARY KEY (`userId`, `dbo.userProfiles_userProfileId`) , 
    INDEX `fk_dbo.users_dbo.userProfiles` (`dbo.userProfiles_userProfileId` ASC) , 
    CONSTRAINT `fk_dbo.users_dbo.userProfiles` 
    FOREIGN KEY (`dbo.userProfiles_userProfileId`) 
    REFERENCES `test`.`dbo.userProfiles` (`userId`) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE) 
ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `test`.`dbo.userProfiles` (
    `userProfileId` INT(11) NOT NULL AUTO_INCREMENT , 
    `userId` INT(11) NOT NULL , 
    `userFirstName` VARCHAR(45) NULL , 
    `userMidleName` VARCHAR(45) NULL , 
    `userLastName` VARCHAR(45) NULL , 
    `userBirthDate` VARCHAR(45) NULL , 
    `userCountry` VARCHAR(45) NULL , 
    `userState` VARCHAR(45) NULL , 
    `userCity` VARCHAR(45) NULL , 
    `userZipCode` VARCHAR(45) NULL , 
    `userPrimaryAddress` VARCHAR(45) NULL , 
    `userSecondaryAddress` VARCHAR(45) NULL , 
    `userThirdAddress` VARCHAR(45) NULL , 
    `userFirstPhone` VARCHAR(45) NULL , 
    `userSecondaryPhone` VARCHAR(45) NULL , 
    `userThirdPhone` VARCHAR(45) NULL , 
    `userFirstEmail` VARCHAR(45) NULL , 
    `userSecondaryEmail` VARCHAR(45) NULL , 
    `userThirdEmail` VARCHAR(45) NULL , 
    `userDescription` VARCHAR(45) NULL , 
    PRIMARY KEY (`userProfileId`, `userId`)) 
ENGINE = InnoDB; 

내 문제가 FK 키가 작동하지 않습니다 내가 (내가 외래 키를 많이 사용하지 않은 ... 내가 여기서 뭔가를 누락 이유는 확실하지 않다 : 여기에 테이블이 있습니다).

오류 :

Executing SQL script in server

ERROR: Error 1005: Can't create table 'test.dbo.users' (errno: 150)

이 그래서 난이 테이블과 다른 사람에 FK를 사용하여 고정 도와 주시겠습니까? 그리고 fk 키가 어떻게 작동 하는지를 설명 할 수있는 충분한 시간이 있다면 (mysql 워크 벤치를 사용하여 다이어그램에 생성 한 후 엔지니어를 사용하십시오). 도움을 주셔서 감사합니다.

+1

먼저 'userProfiles' 테이블을 만들어야합니다. –

+0

먼저 userProfiles 테이블을 만들고 나서 users 테이블을 만들면 무엇을 의미합니까? fff 도구를 사용할 때 먼저 userProfiles를 클릭 한 다음 users 테이블을 클릭하면됩니까? – Bogdan

+0

테이블 생성 순서 변경 :'userProfiles' ** 처음 **,'사용자'** 두번째 ** – Bohemian

답변

1

루트 테이블 (userProfiles)을 먼저 만들어야합니다. set foreign_key_checks=0으로 외래 키 검사를 비활성화하여 일시적으로이 제한을 무시할 수 있습니다. 순환 참조가있는 여러 테이블을 만드는 경우이 작업을 수행해야합니다.

관련 문제