2017-03-07 13 views
0

I DBに次の表にあります。そして、のMySQL - インデックス、リンクテーブルを追加

CREATE TABLE `items_link` (
    `upc` varchar(15) NOT NULL DEFAULT '', 
    PRIMARY KEY (`upc`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 

、別のテーブル:

CREATE TABLE `mws_data` (
    `ItemID` float NOT NULL AUTO_INCREMENT, 
    `Status_response` varchar(15) DEFAULT '', 
    `Id` varchar(15) NOT NULL DEFAULT '', 
    `IdType` varchar(7) NOT NULL DEFAULT '', 
    `IsMultASIN` tinyint(1) DEFAULT '0', 
    `ASIN` varchar(20) DEFAULT '', 
    `BrandAmazon` varchar(150) DEFAULT '', 
    `Title` varchar(1000) DEFAULT '', 
    `ProductGroup` varchar(150) DEFAULT '', 
    `ImgURL` varchar(500) DEFAULT '', 
    `PkgHeight` float DEFAULT NULL, 
    `PkgWidth` float DEFAULT NULL, 
    `PkgLength` float DEFAULT NULL, 
    `PkgWeight` float DEFAULT NULL, 
    `PackageQuantity` float DEFAULT NULL, 
    `Unique_Entry_Id` datetime NOT NULL, 
    PRIMARY KEY (`ItemID`) 
    ) ENGINE=InnoDB AUTO_INCREMENT=116973 DEFAULT CHARSET=utf8 

は今、私はからフィールド '同上' を設定しよう参照 'UPC' からその外部キーに 'mws_dataは' 'items_link':

alter table mws_data add foreign key (Id) references items_link.upc; 

しかし、このエラーが表示さ:

Error Code: 1215. Cannot add foreign key constraint 

私は「items_link.id」ではない「mws_data.id」の値を探してみましたが、0の結果受け取った:任意の提案をいただければ幸いです

select Id 
    from mws_data 
    where id not in (select upc from items_link); 

を!

答えて

1

問題はラインである:

alter table mws_data add foreign key (Id) references items_link.upc; 

は、代わりにこれを試してください:あなたのクエリのために

alter table mws_data add constraint fk_id foreign key (Id) references items_link(upc); 
+0

あなたは実際にはありませんソース表の主キーを指定します。テーブルを変更するmws_data制約を追加する...外部キー(Id)の参照items_link;ちょうどフィンを使用します。 –

+0

完璧、ありがとう、これは素晴らしい! –

1

を、私はこれらのインデックスをお勧めします:

CREATE INDEX your_index_1 ON mws_data (Id) 

CREATE INDEX your_index_2 ON items_link (upc) 
関連する問題