日期:2014-05-16  浏览次数:20514 次

mql建表 外键
环境:Toad for mysql
建表错误信息:
Database Error: Can't create table 'sc17_trunk.tbl_pc_remote_svc' (errno: 150)
分析原因 :
1.外键和被引用外键类型不一样,比如integer和double
2.找不到要被引用的列 (这种情况)
3.表的字符编码不一样
注:联合主键做外键的时候要一起使用
例如:foreign key(c2,c3) references parent(c1,c2));


正确的建表语句:
CREATE TABLE `tbl_pc_remote_svc` (
  `remote_svc_id` int(11) NOT NULL AUTO_INCREMENT,
  `data_svc_id` varchar(64) NOT NULL,
  `edx_service_id` varchar(64) NOT NULL,
  `created_dt` datetime DEFAULT NULL,
  `created_by` varchar(32) DEFAULT NULL,
  `updated_dt` datetime DEFAULT NULL,
  `updated_by` varchar(32) DEFAULT NULL,
  `dpl_version` int(11) DEFAULT NULL,
  PRIMARY KEY (`remote_svc_id`),
  KEY `tbl_pc_remote_svc_fk1` (`data_svc_id`),
  KEY `tbl_pc_remote_svc_fk2` (`edx_service_id`),
  CONSTRAINT `tbl_pc_remote_svc_fk1` FOREIGN KEY (`data_svc_id`) REFERENCES `TBL_PC_DATA_SVC` (`data_svc_id`),
  CONSTRAINT `tbl_pc_remote_svc_fk2` FOREIGN KEY (`edx_service_id`) REFERENCES `TBL_PC_EDX_SERVICE` (`service_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;