2012-04-18 12 views
0

データベーステーブルを作成して接続しようとしています。私は自分のデータ型が同一であることを保証しています。私はまた、テーブルがFKを追加する前に作成されていることを確認します。アドバイスをいただければ幸いです。1005 MySQLエラーを取得する理由がわからない

SQL query: 

ALTER TABLE `Member` ADD FOREIGN KEY (memberId) REFERENCES `Order_Head` (`memberId`) ; 

MySQL said: Documentation 
#1005 - Can't create table 'test2.#sql-184c_63' (errno: 150) (Details...) 





-- --- 
-- Table 'Order_Head' 
-- 
-- --- 

DROP TABLE IF EXISTS `Order_Head`; 

CREATE TABLE `Order_Head` (
    `orderId` INTEGER NOT NULL AUTO_INCREMENT, 
    `memberId` INTEGER NOT NULL, 
    `date` DATE NOT NULL, 
    PRIMARY KEY (`orderId`, `memberId`) 
); 

-- --- 
-- Table 'Member' 
-- 
-- --- 

DROP TABLE IF EXISTS `Member`; 

CREATE TABLE `Member` (
    `memberId` INTEGER NOT NULL AUTO_INCREMENT, 
    `userName` VARCHAR(50) NOT NULL, 
    `password` VARCHAR(50) NOT NULL, 
    `email` VARCHAR(100) NOT NULL, 
    `isAdmin` BOOLEAN NOT NULL DEFAULT false, 
    PRIMARY KEY (`memberId`) 
); 

-- --- 
-- Foreign Keys 
-- --- 

ALTER TABLE `Member` ADD FOREIGN KEY (memberId) REFERENCES `Order_Head` (`memberId`); 

-- --- 
-- Table Properties 
-- --- 
ALTER TABLE `Order_Head` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 
ALTER TABLE `Member` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 

答えて

1

あなたが設定しようとしている外部キーが主キーであるとAUTO_INCREMENTを持っているので、それはあなたがた意味多分何であってもよい:

ALTER TABLE `Order_Head` ADD FOREIGN KEY (memberId) REFERENCES `Member` (`memberId`); 

あなたが作成していない任意の特定の理由CREATE TABLEステートメント内の外部キー?もしそうでなければ、そうするべきでしょう。

+0

まだ存在しないかもしれないテーブルにFKを指摘しようとしていません。 – FunkyMonk91

+0

私はちょうどこれをテストする時間があり、それは働いた。私は今、私のエラーを理解しています。どうもありがとうございました! – FunkyMonk91

+0

良い:)と良い点ALTERを使用してについて – jadkik94

関連する問題