怎么数据库建立表示一直出现 can't create table (errno: 150) 错误?

问答 李鴻飛 ⋅ 于 2019-11-15 18:08:49 ⋅ 最后回复由 青牛 2019-11-16 08:59:07 ⋅ 2367 阅读

我查看了我所要创建的外键和主键的类型,和编码的格式也没发现不对的地方,但是还是建表失败,这是图书代码

file
file
这是全部的SQL语句

管理员信息

CREATE TABLE Administrator(

name char(5) PRIMARY Key,

pwd char(8) not null,

CHECK(SEX IN('男','女')),

FamilyAddress varchar(100) not null,

birth datetime not null,

Age int(3)

);

'员工'

CREATE TABLE AdEmployee(

Ename char(10)PRIMARY Key,

Epwd char(8) not null,

CHECK(ESEX IN('男','女')),

EFamilyAddress char(20) not null,

Ebirth datetime not null,

EAge int(3)

);

'客房'

CREATE TABLE GuestRoom(

room int(4) not null,

CHECK (state IN('false','true')),

price decimal(9,2),

CHECK (roomkind IN('大','中','小')),

booktime datetime,

lefttime datetime,

PRIMARY Key(room,price)

);

'食物'

CREATE TABLE Food(

combo char(10) not null,

Fprice decimal(9,2) ,

PRIMARY Key(combo,Fprice)

);

'客人'

CREATE TABLE Guest(

Ename char(5) not null,

Gname char(10) not null,

CHECK(GSEX IN('男','女')),

Id char(20) not null,

room int(4),

Gday int(2) not null,

phone char(20) not null,

combo char(10),

FOREIGN Key(room) REFERENCES GuestRoom(room),

FOREIGN Key(Ename) REFERENCES AdEmployee(Ename),

FOREIGN Key(combo) REFERENCES Food(combo),

sum decimal(9,2),

PRIMARY Key(Gname,sum)

);

'结算'

CREATE TABLE Consumption(

Gname char(10) not null,

FOREIGN Key(Gname) REFERENCES Guest(Gname),

price decimal(9,2),

FOREIGN Key(price) REFERENCES GuestRoom(price),

Fprice decimal(9,2),

FOREIGN Key(Fprice) REFERENCES Food(Fprice),

other decimal(9,2),

sum decimal(9,2),

FOREIGN Key(sum) REFERENCES Guest(sum)

);

成为第一个点赞的人吧 :bowtie:
回复数量: 1
  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2019-11-16 08:59:07

    外键上面的字段如果不是主键 一定要要建索引

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter