Próbowałem dodając klucz obcy jak to ...MySQL 5.5 dodać klucz obcy nie z błędów [HY000] [150] i [HY000] [1005]
ALTER TABLE OrderLineItem
ADD CONSTRAINT
FK_OrderLineItem_ShippingType_name FOREIGN KEY
(shippingType)
REFERENCES ShippingType(name);
Albo jak to w MySQL 5.5. ..
alter table OrderLineItem add foreign key
FK_OrderLineItem_ShippingType (shippingType) references ShippingType(name);
Za każdym razem, gdy widzę następujący błąd.
[2011-11-18 15:07:04] [HY000] [150] Tworzenie tabeli 'realtorprint_dev_dev/# sql-7d0_80' z klucza obcego nie powiodło się. Brak indeksu w przywoływanej tabeli, w której kolumny z odniesieniami pojawiają się jako pierwsze kolumny.
[2011-11-18 15:07:04] [HY000] [1005] Nie można utworzyć tabelę 'realtorprint_dev_dev # sql-7d0_80. (Errno: 150)
Zarówno OrderLineItem. shippingType i ShippingType.name mają typ varchar (50) nie ma wartości null. ShippingType.name to primaryKey of ShippingType.
Tutaj jest wynikiem pojawienia utworzyć tabela Rodzaj wysyłki jak również OrderLineItem ...
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;
Tęsknię za tym, że jest to klucz podstawowy. Pozwól mi sprawdzić –
Działa dla mnie - czy kolumny są dokładnie tego samego typu w obu tabelach? Widziałem to, gdy występuje niewielkie niedopasowanie typu (sortowanie itp.) –
Wow, wygląda na to, że miałeś rację. – benstpierre