MySQL - 完全新手 - 我的外键编码出了什么问题?

时间:2015-02-10 13:15:13

标签: mysql foreign-keys

当尝试在最后一个表上创建外键时,我收到错误“无法添加外键约束” -

create database library_PW;
use library_PW;

create table title(
title_id    varchar(20)primary key,
name        varchar(50)not null,
reservation_no  numeric(10),
lending_time    varchar(15));

create table item(
title_id    varchar(20)not null,
item_id     varchar(20)not null,
constraint      pk_item primary key(title_id,item_id));

create table magazine(
mag_id      varchar(20)not null,
mag_date    varchar(15)not null,
constraint      pk_magazine primary key(mag_id,mag_date)); 

create table book(
ISBN        varchar(20)primary key,
date_added      date not null);

create table author(
author_id   varchar(20)primary key,
author_name varchar(30)not null);   

create table book_author(
ISBN        varchar(20),
author_id   varchar(20),
index       (ISBN),
index       (author_id),
constraint  pk_book_author primary key(ISBN,author_id),
constraint  fk_ISBNCode foreign key (ISBN) references book(ISBN),
constraint  fk_authorcode foreign key (author_id) references author(author_id));

create table borrower(
membership_id   varchar(20)primary key,
name        varchar(20)not null,
address     varchar(60)not null,
dob     date not null,
date_joined date not null,
telephone   numeric(12),
email       varchar(30));

create table reservation(
title_id    varchar(20),
membership_id   varchar(20),
reserve_date    varchar(20),
index       (title_id),
index       (membership_id),
constraint  pk_reservation primary key(title_id, membership_id,reserve_date),
constraint  fk_title foreign key(title_id) references title(title_id),
constraint  fk_mem_id foreign key(membership_id) references borrower(membership_id));

create table loan(
title_id    varchar(20),
item_id     varchar(20),
borrower_date   varchar(20),
index       (title_id),
index       (item_id), 
constraint  pk_reservation primary key(title_id,item_id,borrower_date),
constraint  fk_loantitle foreign key(title_id) references title(title_id),
constraint  fk_loanitem foreign key(item_id) references item(item_id));

提前致谢!

2 个答案:

答案 0 :(得分:0)

当我遇到这个问题时,它总是因为我选择了错误的类型数据类型..子列的数据类型必须与父列完全匹配。

示例:table.key = int& table.child = VCHAR

对我来说,它始终如此!希望有所帮助。

答案 1 :(得分:0)

谢谢大家!它不是数据类型(一次),这是建议的表项的问题,并且SHOW ENGINE INNODB STATUS \ G向我指出了答案。

所有错误都在表项中我应该在title_id之前有item_id。

再次感谢。