我正在运行 MySQL 5.1.54-lubuntu4
我有一张桌子
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
这个表里面有数据。
我还有一张桌子
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 (table mcli, field id) 的所有行中的数据都是 pr.id 中的有效条目(因为在我将 OLDPR 表迁移到 PR 之前,它们曾经在另一个表 OLDPPR 中。实际上是 mcli.pr_id曾经有一个指向 OLDPR.id(旧表的 id 字段)的外键。
我想添加一个将 mcli.pr_id 与 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 刷新所有数据并重新运行命令以添加外键约束,但它仍然给出了相同的错误。我试过单引号,没有引号。网络上的一切都表明我有正确的语法。我究竟做错了什么?
我很感激我能得到的任何帮助。