java创建mysql错误_MySQL表创建错误

我想创建一个Date表(数据用葡萄牙语),我在dia(day),mes(月)和ano(year)之前有“unique”属性,但是我决定删除它们,因为它没有任何意义,因为表中可能会有很多天“25”和很多“januarys”,但是当我删除“unique”属性时,我收到了以下错误

ERROR 1005(HY000):无法创建表'ist169515.Disponivel'(错误号:150)错误1005(HY000):无法创建表'ist169515.Venda'(错误号:150)查询OK,0行受影响( 0.07秒)ERROR 1005(HY000):无法创建表'ist169515.Encomenda'(错误号:150)错误1005(HY000):无法创建表'ist169515.RegistoEnc'(错误号:150)

完整代码如下:

create table Alimento

(nomeA varchar(80) not null unique,

vegetariano boolean not null,

PRIMARY KEY(nomeA));

create table Simples

(nomeA varchar(80) not null,

calgramas numeric(5,2) not null,

tipo varchar(255) not null,

PRIMARY KEY(nomeA),

FOREIGN KEY(nomeA) REFERENCES Alimento(nomeA));

create table Agregado

(nomeA varchar(80) not null,

calorias numeric(5,2) not null,

PRIMARY KEY(nomeA),

FOREIGN KEY(nomeA) REFERENCES Alimento(nomeA));

create table Composto

(nomeAgg varchar(80) not null unique,

nomeS varchar (80) not null unique,

quantidade numeric(4),

PRIMARY KEY(nomeAgg, nomeS),

FOREIGN KEY(nomeAgg) REFERENCES Agregado(nomeA),

FOREIGN KEY(nomeS) REFERENCES Simples(nomeA));

create table Prato

(nomeA varchar(80) not null,

preco numeric(5,2) not null,

PRIMARY KEY(nomeA),

FOREIGN KEY(nomeA) REFERENCES Alimento(nomeA));

create table Restaurante

(nomeR varchar(80) not null unique,

PRIMARY KEY(nomeR));

create table Data

(dia numeric(2) not null,

mes varchar(45) not null,

ano numeric(4) not null,

PRIMARY KEY(dia, mes, ano));

create table Disponivel

(nomeA varchar(80) not null,

nomeR varchar(80) not null,

dia numeric(2) not null,

mes varchar(45) not null,

ano numeric(4) not null,

PRIMARY KEY(nomeA, nomeR, dia, mes, ano),

FOREIGN KEY(nomeA) REFERENCES Prato(nomeA),

FOREIGN KEY(nomeR) REFERENCES Restaurante(nomeR),

FOREIGN KEY(dia) REFERENCES Data(dia),

FOREIGN KEY(mes) REFERENCES Data(mes),

FOREIGN KEY(ano) REFERENCES Data(ano));

create table Venda

(nomeA varchar(80) not null,

dia numeric(2) not null,

mes varchar(45) not null,

ano numeric(4) not null,

nomeR varchar(80) not null,

num numeric(5) not null,

PRIMARY KEY(nomeA, dia, mes, ano, nomeR),

FOREIGN KEY(nomeA) REFERENCES Prato(nomeA),

FOREIGN KEY(dia) REFERENCES Data(dia),

FOREIGN KEY(mes) REFERENCES Data(mes),

FOREIGN KEY(ano) REFERENCES Data(ano),

FOREIGN KEY(nomeR) REFERENCES Restaurante(nomeR));

create table Cliente

(email varchar(255) not null unique,

PRIMARY KEY Cliente(email));

create table Encomenda

(email varchar(255) not null,

nEnc numeric(5) not null unique,

precoTotal numeric(5,2) not null,

desconto double(20,2) not null,

nomeR varchar(80) not null,

dia numeric(2) not null,

mes varchar(45) not null,

ano numeric(4) not null,

PRIMARY KEY(email, nEnc),

FOREIGN KEY(email) REFERENCES Cliente(email),

FOREIGN KEY(nomeR) REFERENCES Restaurante(nomeR),

FOREIGN KEY(dia) REFERENCES Data(dia),

FOREIGN KEY(mes) REFERENCES Data(mes),

FOREIGN KEY(ano) REFERENCES Data(ano));

create table RegistoEnc

(email varchar(255) not null,

nEnc numeric(5) not null,

nomeA varchar(80) not null,

PRIMARY KEY(email, nEnc, nomeA),

FOREIGN KEY(email) REFERENCES Encomenda(email),

FOREIGN KEY(nEnc) REFERENCES Encomenda(nEnc),

FOREIGN KEY(nomeA) REFERENCES Prato(nomeA));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值