gpt4 book ai didi

Mysql 5.1 - 错误添加外键约束

转载 作者:行者123 更新时间:2023-11-29 03:07:56 25 4
gpt4 key购买 nike

我正在运行 MySQL 5.1.54-lubuntu4

我有一张 table

CREATE TABLE `mcli` (
`id` bigint(20) NOT NULL,
`pr_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK7617032AB07F537D` (`id`),
KEY `FK7617032A4007E4D7` (`pr_id`),
CONSTRAINT `FK7617032AB07F537D` FOREIGN KEY (`id`) REFERENCES `acli` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

而且这张表里面有数据。

我还有一张 table

CREATE TABLE `PR` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`frequency` varchar(255) DEFAULT NULL,
`notes` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FKPRtoAR` (`id`),
CONSTRAINT `FKPRtoAR` FOREIGN KEY (`id`) REFERENCES `AR` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8

这个表里面也有数据。

mcli.pr_id(表mcli,字段id)的所有行中的数据都是pr.id中的有效条目(因为那是在我将OLDPPR表迁移到PR之前它们曾经在另一个表OLDPPR中的数据。事实上mcli.pr_id 曾经有一个指向 OLDPR.id(旧表的 id 字段)的外键。

我想添加一个外键约束,将 mcli.pr_id 绑定(bind)到 PR.id。从架构中可以看出,我已经在 mcli.pr_id 上创建了一个名为 FK7617032A4007E4D7 的索引。所以我尝试运行命令来生成外键约束。

mysql> ALTER TABLE `mcli` ADD CONSTRAINT `FK7617032A4007E4D7` FOREIGN KEY (`pr_id`) REFERENCES `PR` (`id`);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ADD CONSTRAINT `FK7617032A4007E4D7` FOREIGN KEY (`pr_id`) REFERENCES ' at line 1
mysql>

我还尝试从 mcli 刷新所有数据并重新运行命令以添加外键约束,但它仍然给出相同的错误。我试过单引号和没有引号。网络上的所有内容都表明我的语法正确。我做错了什么?

我很感激能得到的任何帮助。

最佳答案

这只是一个有根据的猜测,我没有测试它的环境。

解析器可能会因为已经有一个同名的键而感到困惑,这也会导致语法错误,即使严格来说,语法是好的。

尝试使用另一个约束名称,只是为了验证行为。

然后,尝试删除此 key :

KEY `FK7617032A4007E4D7` (`pr_id`),

在添加约束之前:

ALTER TABLE `mcli` ADD CONSTRAINT `FK7617032A4007E4D7` FOREIGN KEY (`pr_id`) REFERENCES `PR` (`id`);

我无法在更新的 5.1 版本上重现这一点。

关于Mysql 5.1 - 错误添加外键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12631169/

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