gpt4 book ai didi

mysql 外键

转载 作者:行者123 更新时间:2023-11-29 14:46:35 25 4
gpt4 key购买 nike

你好,我有两个 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 吗?如果您有时间向我解释 fk 键的工作原理(使用 mysql 工作台在图表上创建它们,然后进行正向工程)。谢谢你的帮助

最佳答案

您必须首先创建根表(用户配置文件)。您可以通过使用 setforeign_key_checks=0 禁用外键检查来暂时绕过此限制。如果您要创建具有循环引用的多个表,则必须执行此操作。

关于mysql 外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6847801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com