실패 MySQL의 5.5 외래 키를 추가 ... 나는이 같은 외래 키를 추가하는 시도 오류 [HY000] [150]와 [HY000] [1005]
ALTER TABLE OrderLineItem
ADD CONSTRAINT
FK_OrderLineItem_ShippingType_name FOREIGN KEY
(shippingType)
REFERENCES ShippingType(name);
또는 MySQL의 5.5에서이 같은
. ..alter table OrderLineItem add foreign key
FK_OrderLineItem_ShippingType (shippingType) references ShippingType(name);
때마다 다음 오류가 표시됩니다. 외래 키 제약 조건이 실패로
[2011-11-18 15시 7분 4초] [HY000] [150] 'realtorprint_dev_dev/#의 SQL-7d0_80을'테이블 을 만듭니다. 참조 된 열 이 첫 번째 열로 나타나는 참조 된 테이블의 인덱스가 없습니다.
[2011-11-18 15시 7분 4초] [HY000] [1005] 테이블 를 만들 수 없습니다 'realtorprint_dev_dev #의 SQL-7d0_80.'(errno를 : 150)
모두 OrderLineItem. shippingType 및 ShippingType.name의 유형이 varchar (50) not null입니다. ShippingType.name은 ShippingType의 primaryKey입니다./정렬을 체크 - 여기
는CREATE TABLE `shippingtype` (
`name` varchar(50) CHARACTER SET latin1 NOT NULL DEFAULT '',
`description` varchar(255) CHARACTER SET latin1 NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `orderlineitem` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`description` varchar(255) CHARACTER SET latin1 NOT NULL,
`lineNumber` int(11) NOT NULL,
`quantity` int(11) NOT NULL,
`quantityMultiplier` int(11) NOT NULL,
`unitPrice` decimal(10,2) NOT NULL,
`order_id` bigint(20) NOT NULL,
`productDefinition_id` bigint(20) NOT NULL,
`mlsId` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
`printProviderUnitCost` decimal(10,2) NOT NULL,
`shippingType` varchar(50) NOT NULL,
`address` varchar(255) DEFAULT NULL,
`zipPostal` varchar(255) NOT NULL,
`city` varchar(255) NOT NULL,
`stateProvince` varchar(255) NOT NULL,
`country` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_OrderLineItem_productDefinition_id` (`productDefinition_id`),
KEY `idx_OrderLineItem_order_id` (`order_id`),
CONSTRAINT `FK_OrderLineItem_order_id` FOREIGN KEY (`order_id`) REFERENCES `userorder` (`id`),
CONSTRAINT `FK_OrderLineItem_productDefinition_id` FOREIGN KEY (`productDefinition_id`) REFERENCES `productdefinition` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10029 DEFAULT CHARSET=utf8;
기본 키인 것에 대해 나는 그다지 놓쳤다. 내가 확인해 보자. –
Works for me - 열이 두 테이블에서 정확히 같은 유형입니까? 약간의 타입 불일치 (데이터 정렬 등)가있을 때 이것을 보았습니다 –
와우, 당신이 옳았다 고 생각합니다. – benstpierre