我有一个奇怪的情况......我有一个SQL查询 在我的生产服务器上工作,但不在开发服务器上。有问题的查询:
CREATE TABLE IF NOT EXISTS `sizes` (
`size` varchar(255) NOT NULL,
`id` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `sizes` (`size`, `id`) VALUES
('Small', 3),
('Medium', 3),
('Large', 3),
('Medium', 5),
('Large', 5),
('Large', 6),
('Extra Large', 6),
('Extra Large', 4);
ALTER TABLE `sizes`
ADD KEY `id` (`id`);
ALTER TABLE `sizes`
ADD CONSTRAINT `sizes_fk_1` FOREIGN KEY (`id`) REFERENCES `products` (`id`);
正如您所看到的,我只是想创建一个包含我所拥有产品大小的简单表格。我有两列...实际大小以及引用我的id
表的外键products
,并且可以想象,引用大小所属的产品的ID。问题出在我的生产服务器上,查询完美执行并建立了关系。但是在我的开发服务器上,当我触发命令时,我收到此错误消息:
Can't create table `thecovh1_lucy`.`#sql-1eed4_17bf` (errno: 150 "Foreign key constraint is incorrectly formed")
这里有两件事令我困惑:
1.为什么说我试图创建一个名为#sql-1eed4_17bf
的表格
更重要的是
2.我建立外键的方式有什么问题?
作为参考,我也尝试了这种创建表的方法(没有将数据插入表中,这只是试图创建表):
CREATE TABLE IF NOT EXISTS sizes (
size VARCHAR(255) NOT NULL ,
id INT(10) NOT NULL ,
FOREIGN KEY (id) REFERENCES products(id));
这是我创建uiid
表的方式(再次,成功),但这也给了我完全相同的错误消息。