MySql错误1215:无法添加外键约束
在我的RIM中,我得到了1215 MySql错误 我知道错误的含义,我的约束是错误的。但我似乎无法修复它 错误出现在第33行,创建桌上扑克事件 我的代码是:MySql错误1215:无法添加外键约束,mysql,Mysql,在我的RIM中,我得到了1215 MySql错误 我知道错误的含义,我的约束是错误的。但我似乎无法修复它 错误出现在第33行,创建桌上扑克事件 我的代码是: create database FullHouseGr1; use FullHouseGr1; create table Player (player_id int not null, first_name varchar(20) not null, surname
create database FullHouseGr1;
use FullHouseGr1;
create table Player
(player_id int not null,
first_name varchar(20) not null,
surname varchar(20) not null,
addres varchar(40) not null,
postal_code varchar(6) not null,
place varchar(40) not null,
phone_number varchar(20) not null,
email_addres varchar(255) not null,
points int not null,
primary key(player_id));
create table Location
(house_number int not null,
postal_code varchar(6) not null,
capacity int not null,
place varchar(40) not null,
street varchar(40) not null,
primary key(house_number, postal_code));
create table Poker_event
(date_time datetime not null,
min_players int not null,
max_players int not null,
house_number int not null,
postal_code varchar(6) not null,
primary key(date_time),
foreign key(house_number, postal_code) references Location(house_number, postal_code) on delete cascade on update cascade);
create table Tournament
(date_time datetime not null,
prize int not null,
primary key(date_time),
foreign key(date_time) references Poker_event(date_time) on delete no action on update cascade);
create table Tournament_round
(round_nr int not null,
date_time datetime not null,
primary key(date_time, round_nr),
foreign key(date_time) references Tournament(date_time) on delete no action on update cascade);
create table Tournament_table
(winner int not null,
date_time datetime not null,
round_nr int not null,
primary key(winner, date_time, round_nr),
foreign key(date_time) references Tournament(date_time) on delete no action on update cascade,
foreign key(round_nr) references Tournament(round_nr) on delete no action on update cascade);
create table Professional
(p_name varchar(40) not null,
primary key(name));
create table Masterclass
(date_time datetime not null,
min_rating int not null,
name varchar(40) not null,
primary key(date_time),
foreign key(p_name) references Professional(p_name) on delete no action on update cascade,
foreign key(date_time) references Poker_event(date_time) on delete no action on update cascade);
create table Poker_event_player
(date_time datetime not null,
has_payed boolean not null,
player_id int not null,
primary key(date_time, player_id),
foreign key(date_time) references Poker_event(date_time) on delete no action on update cascade,
foreign key(player_id) references Player on delete no action on update cascade);
create table Player_tournament_table
(winner int not null,
date_time datetime not null,
round_nr int not null,
player_id int not null,
primary key(winner, date_time, round_nr, player_id),
foreign key(winner) references Tournament_table on delete no action on update cascade,
foreign key(round_nr) references Tournament_round on delete no action on update cascade,
foreign key(date_time) references Tournament on delete no action on update cascade,
foreign key(player_id) references Player on delete no action on update cascade);
您说的是关于DELETE SET NULL,但这两个字段都不可为NULL。请尝试删除级联
您还可以检查以确保两个表都在使用InnoDB引擎。您说的是关于DELETE SET NULL,但这两个字段都不能为NULL。请尝试删除级联
您还可以检查以确保两个表都使用InnoDB引擎。第33行在哪里?另外,MySQL发布的确切错误是什么?@BuhakeSindi确切的错误消息是1215-无法添加外键@blipman我发布了一个错误的答案您不需要索引引用列,但您应该这样做@mopo922是正确的。@Dan来自德国,该错误部分不完整。MySQL给出了导致错误原因的描述。@DanFromGermany我可能不来自我的老师。因为这将导致未使用的数据。宅院号码、邮政编码在荷兰是唯一的。由于这个问题很老,而且你已经接受了一个你现在似乎还没有接受的答案,你可能想为你的新问题问一个新问题。很难筛选出发生了什么变化。第33行在哪里?另外,MySQL发布的确切错误是什么?@BuhakeSindi确切的错误消息是1215-无法添加外键@blipman我发布了一个错误的答案您不需要索引引用列,但您应该这样做@mopo922是正确的。@Dan来自德国,该错误部分不完整。MySQL给出了导致错误原因的描述。@DanFromGermany我可能不来自我的老师。因为这将导致未使用的数据。宅院号码、邮政编码在荷兰是唯一的。由于这个问题很老,而且你已经接受了一个你现在似乎还没有接受的答案,你可能想为你的新问题问一个新问题。很难筛选已更改的内容。我需要使用什么来删除删除上的行?我一直在努力与删除和删除做斗争UPDATE@blipman17你能用更新级联上的删除级联替换更新级联上的删除级联上的集null吗?这会删除扑克事件's@blipman17,换一个完全不同的结构,使用真实的ID,怎么样。。如果有人更改了他/她的邮政编码怎么办?@DanFromGermany,我使用玩家id表示人,使用门牌号、邮政编码表示地点,因为这在荷兰是唯一的,我需要使用什么来删除删除中的行?我一直在努力与删除和删除做斗争UPDATE@blipman17你能用更新级联上的删除级联替换更新级联上的删除级联上的集null吗?这会删除扑克事件's@blipman17,换一个完全不同的结构,使用真实的ID,怎么样。。如果有人更改了他/她的邮政编码怎么办?@DanFromGermany,我用player_id表示人,用house_number表示地点,因为这在荷兰是独一无二的
create database FullHouseGr1;
use FullHouseGr1;
create table Player
(player_id int not null,
first_name varchar(20) not null,
surname varchar(20) not null,
addres varchar(40) not null,
postal_code varchar(6) not null,
place varchar(40) not null,
phone_number varchar(20) not null,
email_addres varchar(255) not null,
points int not null,
primary key(player_id));
create table Location
(house_number int not null,
postal_code varchar(6) not null,
capacity int not null,
place varchar(40) not null,
street varchar(40) not null,
primary key(house_number, postal_code));
create table Poker_event
(date_time datetime not null,
min_players int not null,
max_players int not null,
house_number int not null,
postal_code varchar(6) not null,
primary key(date_time),
foreign key(house_number, postal_code) references Location(house_number, postal_code) on delete cascade on update cascade);
create table Tournament
(date_time datetime not null,
prize int not null,
primary key(date_time),
foreign key(date_time) references Poker_event(date_time) on delete no action on update cascade);
create table Tournament_round
(round_nr int not null,
date_time datetime not null,
primary key(date_time, round_nr),
foreign key(date_time) references Tournament(date_time) on delete no action on update cascade);
create table Tournament_table
(winner int not null,
date_time datetime not null,
round_nr int not null,
primary key(winner, date_time, round_nr),
foreign key(date_time) references Tournament(date_time) on delete no action on update cascade,
foreign key(round_nr) references Tournament(round_nr) on delete no action on update cascade);
create table Professional
(p_name varchar(40) not null,
primary key(name));
create table Masterclass
(date_time datetime not null,
min_rating int not null,
name varchar(40) not null,
primary key(date_time),
foreign key(p_name) references Professional(p_name) on delete no action on update cascade,
foreign key(date_time) references Poker_event(date_time) on delete no action on update cascade);
create table Poker_event_player
(date_time datetime not null,
has_payed boolean not null,
player_id int not null,
primary key(date_time, player_id),
foreign key(date_time) references Poker_event(date_time) on delete no action on update cascade,
foreign key(player_id) references Player on delete no action on update cascade);
create table Player_tournament_table
(winner int not null,
date_time datetime not null,
round_nr int not null,
player_id int not null,
primary key(winner, date_time, round_nr, player_id),
foreign key(winner) references Tournament_table on delete no action on update cascade,
foreign key(round_nr) references Tournament_round on delete no action on update cascade,
foreign key(date_time) references Tournament on delete no action on update cascade,
foreign key(player_id) references Player on delete no action on update cascade);