我尝试添加外键
CREATE TABLE `uniform_product_details` (
`upc_id` VARCHAR(32) NOT NULL,
`product_id` int(11),
`condition_id` tinyint(1) NOT NULL,
`status` INT NOT NULL,
`created_by` VARCHAR(32),
`updated_by` VARCHAR(32),
`date_added` datetime NOT NULL,
`date_modified` datetime NOT NULL,
PRIMARY KEY(`upc_id`),
INDEX `pid` (`product_id`),
FOREIGN KEY(`product_id`) REFERENCES product(`product_id`) ON DELETE CASCADE
);
但是我的Toad在执行此操作时显示错误
MySQL数据库错误:无法添加外键约束
我对此查询是否存在任何逻辑错误。帮助!!
答案 0 :(得分:1)
请尝试以下代码:
CREATE TABLE `uniform_product_details1` (
`upc_id` VARCHAR(32) NOT NULL,
`product_id` int(11),
`condition_id` tinyint(1) NOT NULL,
`status` INT NOT NULL,
`created_by` VARCHAR(32),
`updated_by` VARCHAR(32),
`date_added` datetime NOT NULL,
`date_modified` datetime NOT NULL,
PRIMARY KEY(`upc_id`),
INDEX `pid` (`product_id`),
FOREIGN KEY(`product_id`) REFERENCES product(`product_id`) ON DELETE CASCADE
)ENGINE=InnoDB;
答案 1 :(得分:0)
可能与引擎有关... MyISAM表不支持外键。将引擎定义为InnoDB:
create table uniform_product_details(
-- All your column definitions
)ENGINE=InnoDB;
您可能需要更改其他表的引擎。如果是这种情况,请使用:
alter table another_table ENGINE=InnoDB;
解决方案的完整序列可能如下:
alter table any_table add foreign key ...
;
关于MySQL存储引擎的进一步参考: