2011-07-27 56 views
0

你好,我有兩個MySQL表,其中一個持有用戶名和密碼,第二個持有用戶信息。下面是表:mysql外鍵

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?如果你有足夠的時間來解釋我的密鑰是如何工作的(使用mysql工作臺在圖上創建它們,然後進行正向工程)。感謝您的幫助

+1

您必須先創建'userProfiles'表。 –

+0

你是什麼意思,首先創建userProfiles表,然後用戶表?你是否想要:當我使用fk工具首先點擊userProfiles然後在用戶表上? – Bogdan

+0

更改表格創建的順序:'userProfiles' **第一**,'用戶** **第二** – Bohemian

回答

1

您必須首先創建根表(userProfiles)。您可以通過使用set foreign_key_checks=0禁用外鍵檢查來暫時繞過此限制。如果您使用循環引用創建多個表,則必須完成此操作。