2013-03-21 24 views
7

クロスデータベースの外部キーを作成しようとしています。私は、同じデータベースで次のコードを実行するとMysqlデータベース間の外部キー

CREATE TABLE `t1` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `int_id` varchar(128) COLLATE utf8_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `int_id` (`int_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

CREATE TABLE `t2` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `ext_id` varchar(128) COLLATE utf8_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `ext_id` (`ext_id`), 
    CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`ext_id`) REFERENCES `t1` (`int_id`) ON DELETE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

は、しかしながら、一のdatabse(D1)にT1を作成し、第二databse(D2)上で、次のコードを実行すると、私は、一般的なエラーが表示されます。#すべてのヘルプは理解されるであろう:(150エラー番号)

CREATE TABLE `t2` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `ext_id` varchar(128) COLLATE utf8_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `ext_id` (`ext_id`), 
    CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`ext_id`) REFERENCES `d1.t1` (`int_id`) ON DELETE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

から1005には、テーブルのuserdata.t2 'を作成できません。ありがとう!あなたの構文が正しくありません

答えて

9

、非常に素晴らしいこの

CREATE TABLE `t2` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `ext_id` varchar(128) COLLATE utf8_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `ext_id` (`ext_id`), 
    CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`ext_id`) REFERENCES `d1`.`t1` (`int_id`) ON DELETE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 
+0

を試してみてください!どうもありがとう。 – sagibb

関連する問題