错误代码1215:无法添加外键约束

时间:2016-03-09 17:24:21

标签: mysql sql

我尝试创建外键但显示错误

  

"错误代码1215:无法添加外键约束"

我尝试修复它,但它无法正常工作。

这是我的剧本:

drop database if exists `manage_Student`;

create database if not exists `manage_Student` default character set utf8;

use `manage_Student`;

drop table if exists `students`;

create table if not exists `students` (
    `id` smallint(8) not null,
    `name` varchar(50) not null,
    `id_pos` smallint (10) not null,
    `address` varchar(50),
    `gender` varchar(7) check (gender in ('male', 'female')),
    primary key (`id`),
    constraint fk_stupos foreign key (`id_pos`) references `position`      (`id_pos`)

) engine = InnoDB default char set = utf8;

drop table if exists `position`;

create table if not exists `position` (
    `id_pos` smallint (10) not null,
    `position` varchar (50),
    primary key (`id_pos`)
) engine = InnoDB default char set = utf8;

1 个答案:

答案 0 :(得分:0)

首先创建position表。它必须存在才能将其用于foreign key约束。

Here是一个SQL小提琴。

另请注意:您对gender有检查限制。 MySQL接受check约束的语法。但是,它实际上并没有做任何事情。这是为了提高与其他数据库的兼容性。

如果您确实想要检查值,则需要使用性别参考表(以及另一个外键约束)或enum类型。