2013-03-21 25 views
7

Çapraz veritabanı yabancı anahtar oluşturmaya çalışıyorum. BenMysql çapraz veritabanı yabancı anahtar

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; 

Ancak aynı veritabanı üzerinde aşağıdaki kodu çalıştırdığınızda, ben genel hatayı aldığınızda bir databse (d1) üzerine t1 oluşturmak ve daha sonra ikinci bir databse (d2) üzerinde aşağıdaki kodu çalıştırın: # 1005 - tablosunu 'userdata.t2' (errno: 150) oluşturulamıyor Herhangi bir yardım takdir edilecektir

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; 

. Teşekkürler!

cevap

9

Kişisel sözdizimi doğru değil, bu

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

Çok müthiş deneyin! Çok teşekkürler. – sagibb

İlgili konular