【发布时间】:2017-02-13 09:33:06
【问题描述】:
我正在尝试在表Reviews 中的字段review_id 和表Sentences 中的id 之间创建一个外键。表结构如下:
CREATE TABLE `Reviews` (
`review_id` varchar(255) CHARACTER SET utf8 NOT NULL,
`package_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`review_content` text CHARACTER SET utf8,
`review_date` date DEFAULT NULL,
`star_rating` int(11) DEFAULT NULL,
`app_version_id` int(11) NOT NULL,
PRIMARY KEY (`review_id`),
KEY `app_version_id` (`app_version_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `Sentences` (
`id` varchar(255) NOT NULL DEFAULT '',
`review` text,
`category` varchar(255) DEFAULT NULL,
`topic` varchar(255) DEFAULT NULL,
KEY `rev-id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我面临以下错误,我不明白问题可能是什么。
ALTER TABLE `Reviews` ADD CONSTRAINT `rev-to-sents` FOREIGN KEY (`review_id`) REFERENCES `Sentences` (`id`)
Foreign key constraint fails for table `msr test db`.`#sql-75_d`:
,
CONSTRAINT `rev-to-sents` FOREIGN KEY (`review_id`) REFERENCES `Sentences` (`id`)
尝试在索引 PRIMARY 元组中添加子表: 数据元组:8个字段; 0:长度 36;十六进制 37626532323335652d616663392d313165362d383935342d633462333031636466363237; asc 7be2235e-afc9-11e6-8954-c4b301cdf627;; ...
【问题讨论】:
-
不幸的是,当涉及到外键定义错误时,MySQL 隐藏了实际的错误消息。您需要运行
SHOW ENGINE INNODB STATUS并在 «LATEST FOREIGN KEY ERROR» 部分中找到它。请注意,show engine queries 需要PROCESSprivilege,而您的常规 MySQL 用户可能没有 - 您可以分配权限或以 root 身份运行查询。
标签: mysql sql foreign-keys foreign-key-relationship