gpt4 book ai didi

MySQL 无法识别外键

转载 作者:行者123 更新时间:2023-11-29 11:50:40 26 4
gpt4 key购买 nike

我正在创建一个数据库,用户可以在其中创建登录名。如果他们已登录,他们可以通过表单提交数据,并且他们的数据应与其主键/登录信息匹配(如果有意义)。

有两个表:Login_InfoNumbers。第一个表的主键是 UserID,我也将 UserId 放在 Numbers 表中:

CREATE TABLE `Login_Info` (

`UserID` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Username` varchar(25),
`Password` varchar (25)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

CREATE TABLE `Numbers` (

`UserID` int(11),
`Savings` varchar(25),
`Goal1` varchar(25),
`Goal2` varchar(25),
`Goal3` varchar(25),
`Cost1` varchar(25),
`Cost2` varchar(25),
`Cost3` varchar(25),
`Weight1` varchar(25),
`Weight2` varchar(25),
`Weight3` varchar(25),
`TotalCost` varchar(25),
`PercentRound` varchar(25)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

为了使 UserID 成为外键,我在第二个表中创建了一个名为 EntryNumber 的新属性作为主键,然后将 UserId 设为外键外键:

CREATE TABLE `Numbers` (

`EntryNumber` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`UserID` FOREIGN KEY REFERENCES Login_Info(UserID),
`Savings` varchar(25),
`Goal1` varchar(25),
`Goal2` varchar(25),
`Goal3` varchar(25),
`Cost1` varchar(25),
`Cost2` varchar(25),
`Cost3` varchar(25),
`Weight1` varchar(25),
`Weight2` varchar(25),
`Weight3` varchar(25),
`TotalCost` varchar(25),
`PercentRound` varchar(25)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

现在,当我尝试添加数据库时,我收到一条消息,指出 FOREIGN KEY REFERENCES 的语法不正确。我尝试了很多方法来添加 FK,但总是收到一条消息,提示 FK 语法不正确。我不确定我的错误可能在这里。如果有人可以看一下并让我知道在通过另一个表中使用的 PK 创建 FK 来创建两个表之间的链接时缺少哪些元素,我将不胜感激。

最佳答案

MySQL foreign key documentation它清楚地表明语法与您编写的完全不同:

CREATE TABLE parent (
id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (
id INT,
parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id)
REFERENCES parent(id)
ON DELETE CASCADE
) ENGINE=INNODB;

所以,你可能需要这样的东西:

UserId INT,
FOREIGN KEY (UserId) REFERENCES Login_Info(UserId),

关于MySQL 无法识别外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34125620/

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