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