![](/img/trans.png)
[英]MySQL foreign key to the same table failed with error 1005, errno 150
[英]MySQL Foreign Key Error 1005 errno 150 (table engine, fields types, lengths and indexations are ok)
我知道关于此错误有很多类似的问题(表创建或更新时FOREIGN KEY失败)。 我已经检查了:
但这仍然不起作用...现在,我只是希望有人可以看一下我的SQL代码,并告诉我是否有问题:(
-- ----------------------------
-- Table structure for `hotels`
-- ----------------------------
DROP TABLE IF EXISTS `hotels`;
CREATE TABLE `hotels` (
`id` int(10) NOT NULL AUTO_INCREMENT,
-- other fields
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `hotelsearch_query`
-- ----------------------------
DROP TABLE IF EXISTS `hotelsearch_query`;
CREATE TABLE `hotelsearch_query` (
`id` int(10) NOT NULL,
-- other fields
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `hotelsearch_result`
-- ----------------------------
DROP TABLE IF EXISTS `hotelsearch_result`;
CREATE TABLE `hotelsearch_result` (
`query_id` int(10) unsigned NOT NULL,
`hotel_id` int(10) unsigned NOT NULL,
-- other fields
PRIMARY KEY (`query_id`,`hotel_id`),
KEY `IDX_QUERY` (`query_id`),
KEY `IDX_HOTEL` (`hotel_id`),
FOREIGN KEY (`query_id`) REFERENCES `hotelsearch_query`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (`hotel_id`) REFERENCES `hotels`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
当我删除有关外键的2行时,一切正常。 当我尝试两者或一一尝试时,我也会遇到错误。
请帮我 !
列和引用的数据类型必须相同。 像这样更改定义,它将起作用:
CREATE TABLE `hotelsearch_result` (
`query_id` int(10) NOT NULL,
`hotel_id` int(10) NOT NULL,
...
你的IDS其中类型的int unsigned
和类型的引用int
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.