MySql不能够在一个表里的两个数据域设置同一个外键吗?

PunWinger 2012-05-14 12:37:45
drop table if exists exprefer;

create table exprefer (
main_id int not null,
refer_id int not null,
primary key(main_id, refer_id),
foreign key(main_id) references labexps(id) on delete cascade on update
cascade,
foreign key(refer_id) references labexps(id) on delete cascade on update
cascade
)type=innodb;


弹出的错误代码是Can't create table (errno: 150)
...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2012-05-14
  • 打赏
  • 举报
回复
你的另外一个表中 labexps(id) 是什么数据类型?是不是INT? 另外有没有加唯一索引或者主键?

mysql> create table labexps(id int primary key);
Query OK, 0 rows affected (0.12 sec)

mysql> create table exprefer (
-> main_id int not null,
-> refer_id int not null,
-> primary key(main_id, refer_id),
-> foreign key(main_id) references labexps(id) on delete cascade on update
-> cascade,
-> foreign key(refer_id) references labexps(id) on delete cascade on update
-> cascade
-> );
Query OK, 0 rows affected (0.10 sec)

mysql>
PunWinger 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

mysql> create table labexps(id int primary key);
Query OK, 0 rows affected (0.25 sec)

mysql> create table exprefer (
-> main_id int not null,
-> refer_id int not null,
->……
[/Quote]

估计是我用的版本太老了不行了,用的是EMS MySQL Manager,我删除一个外表声明之后,自己手动添加外键可以了..唉,这系统真麻烦,用的版本都太老了,想换又太麻烦
rucypli 2012-05-14
  • 打赏
  • 举报
回复
mysql> create table labexps(id int primary key);
Query OK, 0 rows affected (0.25 sec)

mysql> create table exprefer (
-> main_id int not null,
-> refer_id int not null,
-> primary key(main_id, refer_id),
-> foreign key(main_id) references labexps(id) on delete cascade on update
-> cascade,
-> foreign key(refer_id) references labexps(id) on delete cascade on update
-> cascade
-> )engine=innodb;
Query OK, 0 rows affected (0.28 sec)
PunWinger 2012-05-14
  • 打赏
  • 举报
回复
create table labexps (
id int not null primary key AUTO_INCREMENT,
...
...
)type=innodb;


这是我的labexps表,还有,我把一个外键的声明foreign key(refer_id) references labexps(id) on delete cascade on update cascade删除掉后可以建表。
2楼的那个为什么不用加type=innodb呢?我试过不加的确可以创建表,但是外键功能是没效的

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧