原因
解决办法
示例格式如下。
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;# GPUDROP 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;
