求助下,为什么无法创建外键

DROP TABLE IF EXISTS `user_message_type`;
CREATE TABLE `user_message_type` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` varchar(100) NOT NULL DEFAULT '',
  `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据创建时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=395 DEFAULT CHARSET=utf8 COMMENT='用户信息类型';
CREATE TABLE `user_message_record` (
  `id` int(11) NOT NULL,
  `message_id` int(11) NOT NULL,
  `type_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_tb_dept1` (`type_id`),
  CONSTRAINT `fk_tb_dept1` FOREIGN KEY (`type_id`) REFERENCES `user_message_type` (`id`)
);

图片描述

阅读 1.5k
1 个回答

你的第一个表指明了engine,但第二个没有,默认会是InnoDB, 引擎不一样时无法跨表建索引,

试试要么全指定,如下

CREATE TABLE `user_message_record` (
  `id` int(11) NOT NULL,
  `message_id` int(11) NOT NULL,
  `type_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `fk_tb_dept1`    FOREIGN KEY (`type_id`)   REFERENCES `user_message_type` (`id`)
) ENGINE=MyISAM;

要么全不指定。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题