create table student
(
stu_id int primary key auto_increment,
stu_name varchar(20),
stu_sex varchar(10),
stu_age int,
stu_birthday datetime,
classes_id int not null
)ENGINE=INNODB;create table classes
(
classes_id int primary key auto_increment,
classes_name varchar(20),
teacher_id int,
foreign key (classes_id) references student(classes_id)
)ENGINE=INNODB;  我创建了第1张表,然后创建第2张表的时候他报 Can't create table '.\mydata\classes.frm' (errno: 150)错误。
我在网上找帖子看了的“说请仔细检查以下定义语句,常见的错误一般都是表类型不是INNODB、相关联的字段写错了、缺少索引等等”我在表里加上索引还是没用。谢谢那位大虾指点下了。

解决方案 »

  1.   

    create table student 

    stu_id int primary key auto_increment, 
    stu_name varchar(20), 
    stu_sex varchar(10), 
    stu_age int, 
    stu_birthday datetime, 
    classes_id int not null,
    unique (classes_id)
    )ENGINE=INNODB; create table classes 

    classes_id int primary key , 
    classes_name varchar(20), 
    teacher_id int, 
    foreign key (classes_id) references student(classes_id) 
    )ENGINE=INNODB; 
      

  2.   


    先看一下是什么错误:
    [root@localhost ~]# perror 150
    MySQL error code 150: Foreign key constraint is incorrectly formed
    [root@localhost ~]# 
    create   table   student
    (
    stu_id   int   primary   key   auto_increment,
    stu_name   varchar(20),
    stu_sex   varchar(10),
    stu_age   int,
    stu_birthday   datetime,
    classes_id   int   not   null,
    key (classes_id)
    )ENGINE=INNODB;create   table   classes
    (
    classes_id   int   primary   key   auto_increment,
    classes_name   varchar(20),
    teacher_id   int,
    foreign   key f_k (classes_id)   references   student(classes_id)
    )ENGINE=INNODB;     
    mysql> create   table   student
        -> (
        -> stu_id   int   primary   key   auto_increment,
        -> stu_name   varchar(20),
        -> stu_sex   varchar(10),
        -> stu_age   int,
        -> stu_birthday   datetime,
        -> classes_id   int   not   null,
        -> key (classes_id)
        -> )ENGINE=INNODB;
    Query OK, 0 rows affected (0.01 sec)mysql> 
    mysql> create   table   classes
        -> (
        -> classes_id   int   primary   key   auto_increment,
        -> classes_name   varchar(20),
        -> teacher_id   int,
        -> foreign   key f_k (classes_id)   references   student(classes_id)
        -> )ENGINE=INNODB;     
    Query OK, 0 rows affected (0.03 sec)mysql> drop table student;
    ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
    mysql> drop table classes;
    Query OK, 0 rows affected (0.04 sec)mysql> drop table student;
    Query OK, 0 rows affected (0.01 sec)mysql>