mysql外键
您好,我有两个mysql表,一个保存用户名和密码,另一个保存用户信息。以下是表格:mysql外键,mysql,foreign-keys,Mysql,Foreign Keys,您好,我有两个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)
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键不起作用,我不知道为什么我在这里遗漏了一些东西。。(我很少使用外键)
错误:
在服务器中执行SQL脚本
错误:错误1005:无法创建表“test.dbo.users”(错误号:150)
你能帮我修一下吗?这样我就可以在这张桌子和其他桌子上使用fk了?如果您有时间向我解释fk键是如何工作的(使用mysql workbench在图表上创建它们,然后转发工程师)。感谢您的帮助您必须首先创建根表(userProfiles)。通过使用
set foreign\u key\u checks=0禁用外键检查,可以暂时绕过此限制。如果要创建具有循环引用的多个表,则必须执行此操作。必须先创建userProfiles
表。首先创建userProfiles表,然后创建users表是什么意思?您是否参考:当我使用fk工具时,首先单击userProfiles,然后单击users表?更改表创建顺序:userProfiles
first,users
second