mysql错误1005,无法创建表errno 150

lg40wkob  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(340)

我正在尝试将“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 |
9o685dep

9o685dep1#

万一有人遇到和我一样的问题,由于短暂的无知,我会留下我找到的解决方案。您尝试引用的列(父表的列)需要索引。我想应该有一个索引列。。。
在我的示例中,art\u keys表中的art\u id需要使用以下方法编制索引: alter table add index art_id(art_id) 在外键声明中引用之前。

相关问题