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)
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)
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>
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呢?我试过不加的确可以创建表,但是外键功能是没效的
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)
估计是我用的版本太老了不行了,用的是EMS MySQL Manager,我删除一个外表声明之后,自己手动添加外键可以了..唉,这系统真麻烦,用的版本都太老了,想换又太麻烦