Am o masă care ar trebui să urmărească zilele și costurile pentru expedierea produsului de la un furnizor la altul. Noi (strălucit: p) am păstrat atât vânzătorii de marfă (FedEx, UPS), cât și furnizorii de manipulare a produselor (Think ... Dunder Mifflin) într-o masă "VANDTOR". Deci, am trei coloane în tabelul meu SHIPPING_DETAILS pe care toate referințele VENDOR.no. Din anumite motive, MySQL nu mă lasă să le definesc pe toate trei ca chei străine. Vreo idee?
CREATE TABLE SHIPPING_GRID(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique ID for each row',
shipping_vendor_no INT(6) NOT NULL COMMENT 'Foreign key to VENDOR.no for the shipping vendor (vendors_type must be 3)',
start_vendor_no INT(6) NOT NULL COMMENT 'Foreign key to VENDOR.no for the vendor being shipped from',
end_vendor_no INT(6) NOT NULL COMMENT 'Foreign key to the VENDOR.no for the vendor being shipped to',
shipment_duration INT(1) DEFAULT 1 COMMENT 'Duration in whole days shipment will take',
price FLOAT(5,5) NOT NULL COMMENT 'Price in US dollars per shipment lbs (down to 5 decimal places)',
is_flat_rate TINYINT(1) DEFAULT 0 COMMENT '1 if is flat rate regardless of weight, 0 if price is by lbs',
INDEX (shipping_vendor_no),
INDEX (start_vendor_no),
INDEX (end_vendor_no),
FOREIGN KEY (shipping_vendor_no) REFERENCES VENDOR (no),
FOREIGN KEY (start_vendor_no) REFERENCES VENDOR (no),
FOREIGN KEY (end_vendor_no) REFERENCES VENDOR (no)
) TYPE = INNODB;
Editat pentru a elimina definiția dublă a cheii primare ...
Da, din păcate, asta nu a rezolvat-o. Acum primesc:
Nu se poate crea tabel
'./REMOVAT NUMELE MY DB /SHIPPING_GRID.frm'
(errno: 150)
Făcând un phpinfo() îmi spune asta pentru mysql:
Versiunea API a clientului 5.0.45
Da, VENDOR.no este tipul int (6).