- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下父表:
create table A(
a int(64) unsigned not null,
b set('a', 'b', 'c') not null default '',
c set('d', 'e') not null default '',
primary key ( a,b,c)
)
还有 child :
create table B(
d int(64) unsigned not null auto_increment,
a int(64) unsigned not null,
c set('d', 'e') not null default '',
primary key (d),
key fk1 (a,c),
constraint fk1 foreign key (a, c) references (a, c)
)
但随后我在 mysql 日志中创建子表时遇到 fk 错误:
Error in foreign key constraint of table Foreign key (a,c) references A (a,c): Cannot find an index in the referenced table where the referenced columns appear as the first columns, or column types in the table and the referenced table do not match for constraint.
我的 SQL 有什么问题?
最佳答案
当您定义外键时,MySQL 要求远程表中的列存在索引,以便它可以高效地执行约束检查。
它可以是引用列的索引,也可以是从引用列开始的索引,然后包含其他列,所以在你的情况下,表 A 应该有一个包含列 (a,c) 的索引,可能还有一些其他。
现在,在表 A 中,列集 (a, b, c) 上有一个索引。请注意,列的顺序很重要,并且 (a,b,c) 上的索引与 (a,c,b) 中的索引不同。
FK 引用列 (a,c)。表 A 中没有这些列的索引,也没有任何其他以这两个列开头并包含更多列的索引。
所以你有两个选择:
在 A 中为这两列添加一个额外的索引:
修改表A
添加索引 tempindex
(a
, c
);
关于mysql - 由父表中的部分主键组成的复合外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42596817/
我正在使用 Sharepiont,它吐出的代码充其量是困惑的。 我在一个表中有一个 div 的 ID,该表在另一个表中,我需要获取父表的父表。 这是我正在使用的 JsFiddle: http://js
我是一名优秀的程序员,十分优秀!