请教下MYSQL的外键的问题。
create table studcourse
(stucourseid int primary key auto_increment,
sid int references student(sid),
cid int references course(cid),
grade int(3) not null
);
这样子创建,设置了外键么。这是奥忍考的,可是我电脑上只有MYSQL,本来这么写也没问题。
结果我SHOW create table studcourse的时候,没有看到外键的信息。
studcourse | CREATE TABLE `studcourse`
`stucourseid` int(11) NOT NULL AUTO_IN
`sid` int(11) DEFAULT NULL,
`cid` int(11) DEFAULT NULL,
`grade` int(3) NOT NULL,
PRIMARY KEY (`stucourseid`)
ENGINE=InnoDB DEFAULT CHARSET=utf8 |
但是接着,我想添加外键。
alter table studcourse add foreign key(sid) references student(cid);
结果提示错误
Can't create table 'hibernate.#sql-7c8_1' (errno: 150)
------解决方案--------------------程序里很少用外键了
------解决方案--------------------估计你使用的是MyISAM 数据引擎,所以不支持外键,你可以将数据库引擎改为innodb试一下应该就可以了。
以你的代码为例
reate table studcourse(
stucourseid int primary key auto_increment,
sid int references student(sid),
cid int references course(cid),
grade int(3) not null,
CONSTRAINT FOREIGN KEY (`sid`) references `student`(`sid`),
CONSTRAINT FOREIGN KEY (`cid`) references `course`(`cid`)
)engine=innoDB;
执行这上面的sql之前要保证student 和course这两个表也是innoDB才行,至于怎么修改数据库引擎可以在网上找。
create table t5 (c1 int ,c2 int, CONSTRAINT FOREIGN key (`c2`) references `t3`(`c1`))engine=innoDB
------解决方案--------------------