Mysql表创建外键报错解决方案

数据库表a:

create table task_desc_tab
(
  id int(11) primary key not null comment '自增主键' auto_increment,
  <strong>taskname</strong> varchar(200) not null comment '任务名字',
  sqlname varchar(20) not null comment 'sql文件名字',
  params varchar(5000) not null comment '任务参数,格式为一个json字符串',
  updatetime timestamp default current_timestamp comment '更新时间',
  detail varchar(3000) comment '任务一些描述信息,只是备注信息作用'
)
 engine = innodb
 default charset = utf8;

数据库b:

create table exec_plan_tab
(
  id int(11) primary key not null auto_increment,
  <strong>taskname</strong> varchar(200) not null,
  startdate date not null,
  enddate date not null,
  updatetime timestamp default current_timestamp,
  constraint exec_plan_tab_task_desc_tab_taskname_fk foreign key (taskname) references task_desc_tab (taskname)
)
 engine = innodb
 default charset = utf8;

目标:创建表使得表b中的taskname为外键,参考表a中的taskname字段,创建表发现报错如下:

[2018-07-19 15:02:29] [hy000][150] create table ‘daxin/#sql-5d_30’ with foreign key constraint failed. there is no index in the referenced table where the referenced columns appear as the first columns.
[2018-07-19 15:02:29] [hy000][1215] cannot add foreign key constraint
[2018-07-19 15:02:29] [hy000][1215] cannot add foreign key constraint 

经过排查找到问题原因: 表a中的taskname必须使用unique字段修饰,这样保证记录唯一性,当表b参考时候不会出现歧义。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐