原因
解决办法
示例格式如下。
CONSTRAINT `xxx_fk` FOREIGN KEY (`key1`, `key2`, ...) REFERENCES <table_name> (`fk_key1`, `fk_key2`, ...)
具体参见以下SQL文件(部分)。
# 电脑组装方案
DROP TABLE IF EXISTS `pc_assembly_scheme`;
CREATE TABLE `pc_assembly_scheme`
(
`scheme_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
`gpu_manufacturer` varchar(20) DEFAULT NULL COMMENT '独立显卡厂商',
`gpu_model` varchar(20) DEFAULT NULL COMMENT '独立显卡型号',
`mainboard_manufacturer` varchar(20) DEFAULT NULL COMMENT '主板厂商',
`mainboard_model` varchar(20) DEFAULT NULL COMMENT '主板型号',
`cpu_manufacturer` varchar(20) DEFAULT NULL COMMENT 'CPU厂商',
`cpu_model` varchar(20) DEFAULT NULL COMMENT 'CPU型号',
PRIMARY KEY (`scheme_id`) USING BTREE,
UNIQUE INDEX `pc_assembly_scheme_pk` (`scheme_id`) USING BTREE,
CONSTRAINT `gpu_manufacturer_fk` FOREIGN KEY (`gpu_manufacturer`, `gpu_model`) REFERENCES `gpu` (`manufacturer`, `model`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `mainboard_manufacturer_fk` FOREIGN KEY (`mainboard_manufacturer`, `mainboard_model`) REFERENCES `mainboard` (`manufacturer`, `model`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `cpu_manufacturer_fk` FOREIGN KEY (`cpu_manufacturer`, `cpu_model`) REFERENCES `cpu` (`manufacturer`, `model`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB;
# GPU
DROP TABLE IF EXISTS `gpu`;
CREATE TABLE `gpu`
(
`manufacturer` varchar(20) NOT NULL COMMENT '厂商',
`model` varchar(20) NOT NULL COMMENT '型号',
`product_series` varchar(20) DEFAULT NULL COMMENT '产品系列',
`core_code` varchar(20) DEFAULT NULL COMMENT '核心代号',
`manufacture_process(nm)` varchar(20) DEFAULT NULL COMMENT '制造工艺(nm)',
`stream_processor_num` varchar(20) DEFAULT NULL COMMENT '流处理器数',
`core_frequency(GHz)` varchar(20) DEFAULT NULL COMMENT '核心频率(GHz)',
`accelerating_frequency(GHz)` varchar(20) DEFAULT NULL COMMENT '加速频率(GHz)',
`video_memory_bit_width(-bit)` varchar(20) DEFAULT NULL COMMENT '显存位宽',
`video_memory_capacity` varchar(20) DEFAULT NULL COMMENT '显存容量',
`video_memory_frequency(GHz)` varchar(20) DEFAULT NULL COMMENT '显存频率(GHz)',
`power(W)` varchar(20) DEFAULT NULL COMMENT '功耗(W)',
PRIMARY KEY (`manufacturer`, `model`) USING BTREE,
UNIQUE INDEX `gpu_pk` (`manufacturer`, `model`) USING BTREE
) ENGINE = InnoDB;