Mysql无法为我的表添加外键约束

Mysql无法为我的表添加外键约束,mysql,Mysql,嘿,伙计们,收到错误代码1215,SQL状态HY000:无法为我的PERSON\u组表和图像表添加外键约束。。不知道为什么,我的参考有问题吗?我试着重写它,但它就是不起作用 更新的代码我现在刚刚收到一个错误,外键(ID)引用仪器(ID)您只能创建引用主键或唯一键的外键。由于ID是PERSON的主键,请将外键改为指向ID而不是电子邮件。您还可以将电子邮件设置为唯一列,这可能是一个好主意,可以确保没有人重用相同的电子邮件地址,但将外键设置为整数而不是字符串的存储空间更小。您只能创建引用主键或唯一键的

嘿,伙计们,收到错误代码1215,SQL状态HY000:无法为我的
PERSON\u组
表和
图像
表添加外键约束。。不知道为什么,我的参考有问题吗?我试着重写它,但它就是不起作用


更新的代码我现在刚刚收到一个错误,
外键(ID)引用仪器(ID)

您只能创建引用主键或唯一键的外键。由于ID是PERSON的主键,请将外键改为指向ID而不是电子邮件。您还可以将电子邮件设置为唯一列,这可能是一个好主意,可以确保没有人重用相同的电子邮件地址,但将外键设置为整数而不是字符串的存储空间更小。

您只能创建引用主键或唯一键的外键。由于ID是PERSON的主键,请将外键改为指向ID而不是电子邮件。您还可以将电子邮件设置为一个唯一的列,这可能是一个好主意,可以确保没有人重复使用相同的电子邮件地址,但在整数上设置外键比在字符串上设置外键的存储空间更小。

我遇到了这个问题。问题是数据库引擎。直到我在工作之前添加了
ENGINE=MyISAM DEFAULT CHARSET=latin1
。我猜我的默认值是innoDB或其他什么

CREATE TABLE LECTURE_NOTE (
  ID bigint(20) NOT NULL, 
  NOTE VARCHAR(1000) NOT NULL, 
  NOTE_DATE TIMESTAMP NULL DEFAULT NULL,
  LECTURE_ID bigint(20) NOT NULL,
  PUBLISHER_ID bigint(20) NOT NULL,
  PRIMARY KEY (ID),
  CONSTRAINT fk_lecture_id FOREIGN KEY (LECTURE_ID) REFERENCES 
  COURSE_LECTURE (ID),
  CONSTRAINT fk_publisher_id FOREIGN KEY (PUBLISHER_ID) REFERENCES 
  PUBLISHER (ID)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

我有这个问题。问题是数据库引擎。直到我在工作之前添加了
ENGINE=MyISAM DEFAULT CHARSET=latin1
。我猜我的默认值是innoDB或其他什么

CREATE TABLE LECTURE_NOTE (
  ID bigint(20) NOT NULL, 
  NOTE VARCHAR(1000) NOT NULL, 
  NOTE_DATE TIMESTAMP NULL DEFAULT NULL,
  LECTURE_ID bigint(20) NOT NULL,
  PUBLISHER_ID bigint(20) NOT NULL,
  PRIMARY KEY (ID),
  CONSTRAINT fk_lecture_id FOREIGN KEY (LECTURE_ID) REFERENCES 
  COURSE_LECTURE (ID),
  CONSTRAINT fk_publisher_id FOREIGN KEY (PUBLISHER_ID) REFERENCES 
  PUBLISHER (ID)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

那么,在表中添加
UNIQUE(email)
会解决这个问题吗?@Vulcronos要小心列的数据类型,例如:
GROUPS:GID SMALLINT UNSIGNED NOT NULL
//
图像:INSTRUMENTID SMALLINT NOT NULL
@Vulcronos我设法解决了大多数问题,除了
外键(ID)引用工具(ID)
@wchiquitop谢谢你的代码,我可以看出哪里出了问题。@Hayde你不能为你还没有创建的表创建外键。将仪器的create table语句移到图像的create table语句上方。那么在表上添加
UNIQUE(email)
是否可以解决此问题?@Vulcronos小心列的数据类型,例如:
GROUPS:GID SMALLINT UNSIGNED NOT NULL
//
图像:INSTRUMENTID SMALLINT NOT NULL
@Vulcronos我设法解决了大多数问题,除了
外键(ID)引用工具(ID)
@wchiquitop谢谢你的代码,我可以看出哪里出了问题。@Hayde你不能为你还没有创建的表创建外键。将仪器的create table语句移到图像的create table语句上方。