我運行MySQL 54年5月1日 - lubuntu4MySQL 5.1中 - 錯誤添加外鍵約束
我有一個表
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(表mcli,字段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的數據並重新運行該命令以添加外鍵約束,但它仍然給出相同的錯誤。我嘗試了單引號和沒有引號。網絡上的所有內容都表明我擁有正確的語法。我究竟做錯了什麼?
我感謝任何幫助,我可以得到。
我試過了。我也嘗試刪除「ADD CONSTRAINT」子句。它有時但並非每次都有效。我最終的解決方法是克隆子表,刪除原始子表,創建原始子表名,並從克隆中取回數據。 –