我试图创建db1表read_x_tag_0列外键db2列下面是我的代码,不确定我做对了吗?它显示1215错误,找不到原因?
数据库“读取”
表“ read_x_tag_0”
CREATE TABLE `read_x_tag_0` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`read_id` int(11) unsigned NOT NULL,
`tag_0_id` int(11) unsigned NOT NULL,
`tag_0_sequence` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `read_id` (`read_id`),
KEY `tag_0_id` (`tag_0_id`),
CONSTRAINT `read_x_tag_0_ibfk_1` FOREIGN KEY (`read_id`) REFERENCES `read` (`id`) ON DELETE CASCADE,
CONSTRAINT `read_x_tag_0_ibfk_2` FOREIGN KEY (`tag_0_id`) REFERENCES `tag_0`.`tag_0` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=76 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
数据库“读取”
表“读取”
CREATE TABLE `read` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`subject` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`intro` text COLLATE utf8_unicode_ci,
`content` text COLLATE utf8_unicode_ci,
`sequence` int(11) unsigned NOT NULL,
`visible` int(11) unsigned NOT NULL COMMENT '1:visible,0:invisible',
`create_at` datetime NOT NULL,
`create_by` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`update_at` datetime NOT NULL,
`update_by` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
数据库“标签_0”
表“标签_0”
CREATE TABLE `tag_0` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`subject` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`visible` int(11) unsigned NOT NULL COMMENT '1:visible,0:invisible',
`sequence` int(11) unsigned NOT NULL,
`create_at` datetime NOT NULL,
`create_by` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`update_at` datetime NOT NULL,
`update_by` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `subject` (`subject`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
您不应该将.
内部反引号。反引号转义了其中的所有字符,因此不会将其视为数据库名和表名之间的分隔符。它应该是:
REFERENCES `db2`.`tag_0`
在约束中,read_x_tag_0
两个约束都使用相同的名称。所有约束都必须具有不同的名称,因此请重命名其中之一。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句