我正在尝试将“articles>a\u keywords”连接到“art\u keys>art\u id”
文章表:
| articles | CREATE TABLE `articles` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(50) DEFAULT NULL,
`source` varchar(255) DEFAULT NULL,
`press` varchar(60) DEFAULT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`a_keywords` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 |
艺术钥匙表:
| art_keys | CREATE TABLE `art_keys` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`art_id` int(10) unsigned DEFAULT NULL,
`keyw_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `keyw_id` (`keyw_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
外键命令:
ALTER TABLE articles ADD FOREIGN KEY (a_keywords) REFERENCES art_keys(art_id);
我已经成功地连接了“keywords>k\u articles”和“art\u keys>keyw\u id”,但是我不知道为什么它不能与“articles>a\u keywords”一起工作。
我试着用id和关键字列创建一个新表,但仍然没有成功。我相信我修复了以下列出的所有原因:http://www.eliacom.com/mysql-gui-wp-errno-150.php 帮助我!
| keywords | CREATE TABLE `keywords` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`words` varchar(100) DEFAULT NULL,
`k_articles` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `k_articles` (`k_articles`),
CONSTRAINT `keywords_ibfk_1` FOREIGN KEY (`k_articles`) REFERENCES `art_keys` (`keyw_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 |
1条答案
按热度按时间ocebsuys1#
万一有人遇到和我一样的问题,由于短暂的无知,我会留下我找到的解决方案。您尝试引用的列(父表的列)需要索引。我想应该有一个索引列。。。
在我的示例中,art\u keys表中的art\u id需要使用以下方法编制索引:
alter table add index art_id(art_id)
在外键声明中引用之前。