我使用了不同的数据库以及表格而不是我收到错误,但错误仍然存在......
以下是三个表格:
表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('first'主键)q的外键。
如果我尝试将另一个属性作为第二个主键的外键,即'w',则显示错误1215
alter table c add foreign key(t) references a(w);
ERROR 1215(HY000):无法添加外键约束
为什么不把't'作为'SECOND'主键的外键,即'w'。 “我可以将它们中的任何一个作为第一个主键(q)的外键,但它们都不能成为第二个(w)”。
这可能会让人感到困惑,但是当我在创建表格a时仅通过将(q,w)更改为(w,q)来删除并创建所有'时,w可以由其他人引用但不是a。
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);
ERROR 1215(HY000):无法添加外键约束
请帮助我......我花了一整天......但我找不到为什么会这样......
答案 0 :(得分:0)
InnoDB允许外键引用任何索引列或组 列。但是,在引用的表中,必须有一个索引 其中引用的列被列为的第一列 同样的订单
http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
答案 1 :(得分:-1)