Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用alter命令向复合主键添加外键显示错误1215_Mysql - Fatal编程技术网

Mysql 使用alter命令向复合主键添加外键显示错误1215

Mysql 使用alter命令向复合主键添加外键显示错误1215,mysql,Mysql,我使用了不同的数据库和表,但错误仍然存在 以下是三张表格: 表a: create table a(q int,w int,primary key(q,w));//IMPORTANT:q then w q和w构成复合主键 表b: create table b(e int,r int); 表3: create table c(t int,y int); alter table b add foreign key(e) references a(q); Query OK, 0 rows affe

我使用了不同的数据库和表,但错误仍然存在

以下是三张表格:

表a:

create table a(q int,w int,primary key(q,w));//IMPORTANT:q then w
q和w构成复合主键

表b:

create table b(e int,r int);
表3:

create table c(t int,y int);

alter table b add foreign key(e) references a(q);
Query OK, 0 rows affected (0.16 sec)
这个alter命令将e作为表a的q的外键(“第一个”主键)

如果我尝试将另一个属性作为第二个主键的外键,即“w”,它将显示错误1215

alter table c add foreign key(t) references a(w);
错误1215(HY000):无法添加外键约束

为什么不将“t”作为“SECOND”主键(即“w”)的外键。 “我可以将它们中的任何一个作为第一个主键(q)的外键,但不能将它们设置为第二个主键(w)”

这可能会让人困惑,但当我在创建表a时仅通过将(q,w)更改为(w,q)来删除并再次创建所有表时,其他人可以引用w,但a不能引用w

create table a(q int,w int,primary key(w,q)); 
alter table c add foreign key(t) references a(w);
Query OK, 0 rows affected (0.16 sec)

alter table b add foreign key(e) references a(q);
错误1215(HY000):无法添加外键约束

请帮帮我…我花了一整天的时间…但我不知道为什么会发生

InnoDB允许外键引用任何索引列或索引组 柱。但是,在引用的表中,必须有一个索引 其中引用的列列列为列表中的第一列 相同顺序


这是使用oracle®express®11eg软件使用alter命令创建的加密外键的图像。我在这里真正做的是,我制作了两张表格,分别是测试表和学生表。测试表由测试id、名称等组成,学生表又由id、名称等组成。在这两个表中,id使用命令“主键(id)”命名为主键,然后我编写命令“alter table test,add外键(id),references SUSTORS(id)”;“创建外键,不是很简单吗?

请编辑您的帖子,使sql语句真正可读…因此
更改表b添加外键(e)引用a(q)
实际上是有效的语法,尽管
q
只是复合PK的一部分!我必须测试它,以确保我仍然不相信我的眼睛!仅在MySQL中!:))