2017-12-12 21 views
1

私のフィクスチャを埋めるときに問題が発生しました。私は2つのテーブル(クライアントとパートナー)を持っています。私はこの問題を持っている私は私の備品を実行すると外部キーを使用してデータベースを作成する方法

CREATE TABLE `partner` (
    `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(20) NOT NULL, 
    `client_id` int(10) unsigned NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `name` (`name`), 
    UNIQUE KEY `client_id` (`client_id`), 
    CONSTRAINT `partner_ibfk_3` FOREIGN KEY (`client_id`) REFERENCES `client` 
    (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; 

CREATE TABLE `client` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `partner_id` tinyint(3) unsigned DEFAULT NULL, 
    `partner_ref` varchar(7) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `partner_ref` (`partner_ref`,`partner_id`), 
    KEY `partner_id` (`partner_id`), 
    CONSTRAINT `client_ibfk_1` FOREIGN KEY (`partner_id`) REFERENCES `partner` 
    (`id`), 
) ENGINE=InnoDB AUTO_INCREMENT=667305 DEFAULT CHARSET=utf8 PACK_KEYS=0; 

ライン863でERROR 1215(HY000):外部キー制約に

を追加することはできません、私はなって、それはだとき理由テーブル 'partner'が作成され、テーブル 'client'は外部キーが見つからないためではありません。

しかし、私が変更して「パートナー」の前に「クライアント」を置くと、問題は同じです。

ありがとうございました!

+0

'innodb'タグは私がその質問をしたときに適用されませんでした! –

答えて

1

私は解決策を見つけた:

私は「パートナー」の作成に制約を取り除き、私はALTER TABLEで「クライアント」を作成した後、この制約を追加しました:

CREATE TABLE `partner` (
    `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(20) NOT NULL, 
    `client_id` int(10) unsigned NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `name` (`name`), 
    UNIQUE KEY `client_id` (`client_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; 

CREATE TABLE `client` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `partner_id` tinyint(3) unsigned DEFAULT NULL, 
    `partner_ref` varchar(7) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `partner_ref` (`partner_ref`,`partner_id`), 
    KEY `partner_id` (`partner_id`), 
    CONSTRAINT `client_ibfk_1` FOREIGN KEY (`partner_id`) REFERENCES `partner` 
    (`id`), 
) ENGINE=InnoDB AUTO_INCREMENT=667305 DEFAULT CHARSET=utf8 PACK_KEYS=0; 

ALTER TABLE `partner` 
ADD CONSTRAINT `partner_ibfk_3` FOREIGN KEY (`client_id`) REFERENCES 
`client` (`id`); 
+0

これは正解と思われます。受諾された回答としてマークしてください。 –

+1

私は現時点で受け入れることができません、私は自分の答えを受け入れるために2日間待たなければなりません。 –

+0

ああ、いいですよ! –

関連する問題