create table class(
id int unsigned auto_increment,
className varchar(50),
classDesc varchar(50),
primary key(id)
);
create table student(
id int unsigned auto_increment,
stuName varchar(50),
stuSex char(50),
score float(5,2),
classId int,
primary key(id),
foreign key(classId) references class(id) on delete cascade on update cascade
);
在创建表的时候,出现了这样的错误
1005 - Can't create table '.\day14\student.frm' (errno: 150)
查看SQL语句:
1.查看语法,尤其是外键的sql语法,这里没问题
2.查看student表中主键和外键的类型,也没有问题
最后才发现,因为我class表中的主键有一个unsigned用来保证保存的int类型的整数都是正数,而从表student中没有写unsigned,所以后来在student从表中加上unsigned之后,就能正常创建了
create table class(
id int unsigned auto_increment,
className varchar(50),
classDesc varchar(50),
primary key(id)
);
create table student(
id int unsigned auto_increment,
stuName varchar(50),
stuSex char(50),
score float(5,2),
classId int unsigned,
primary key(id),
foreign key(classId) references class(id) on delete cascade on update cascade
);