私は、あるベンダーから別のベンダーに製品を出荷する日数とコストを追跡するはずのテーブルを持っています。私たち(華麗に:p)は、出荷ベンダー(FedEx、UPS)と製品取扱いベンダー(Think ... Dunder Mifflin)を両方とも「ベンダー」テーブルに保管していました。したがって、私はSHIPPING_DETAILSテーブルに3つの列を持ち、すべてVENDOR.noを参照しています。何らかの理由で、MySQLは3つすべてを外部キーとして定義することはできません。何か案は?二重の主キー定義を削除するように編集 複数の外部キー?
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;
...
うん、残念ながらしかしそれを修正しませんでした。今私は取得しています:
はテーブル を作成できません './ REMOVED MY DB名を /SHIPPING_GRID.frm' (エラー番号:150)のphpinfoを行う
()伝えますmysqlの私、この:
クライアントAPIバージョン5.0.45
はい、VENDOR.noはint型(6)です。
、エラー; VENDORテーブルがMyISAMのだった...(それらの両方INNODBを作るために私に教えてあなたの答えを編集しました)? 150は[foreign key constraints](http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html)エラーを指します。 VENDORテーブルの定義を提供できますか? VENDORのPKはINT(6)か単にINTですか?上記のページから: - 整数型のサイズと符号は同じでなければなりません。 –