Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql外键_Mysql_Foreign Keys - Fatal编程技术网

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)

您好,我有两个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键不起作用,我不知道为什么我在这里遗漏了一些东西。。(我很少使用外键)

错误:

在服务器中执行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