我試圖在表Reviews
和id
的表Sentences
的字段review_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:len 36;十六進制37626532323335652d616663392d313165362d383935342d633462333031636466363237; asc 7be2235e-afc9-11e6-8954-c4b301cdf627 ;; ...
不幸的是,當涉及到外鍵定義錯誤時,MySQL隱藏了實際的錯誤信息。您需要運行「SHOW ENGINE INNODB STATUS」並在«最新的外鍵錯誤»部分找到它。請注意[顯示引擎查詢](https://dev.mysql.com/doc/refman/5.7/en/show-engine.html)需要['PROCESS'特權](https://dev.mysql。 com/doc/refman/5.7/en/privileges-provided.html#priv_process),您的普通MySQL用戶可能沒有 - 您可以分配權限或以root身份運行查詢。 –