Mysql 错误代码1824-无法打开引用的表

Mysql 错误代码1824-无法打开引用的表,mysql,Mysql,我尝试在MySQL上创建DB项目,当我尝试添加外键时,它在我尝试创建的所有表上显示错误代码1824。我的代码是: create table cliente ( id_cliente varchar(20) not null primary key, nome varchar(50) unique not null, endereco varchar(70) not null, celular varchar(15) not null, id_cartao_cliente int not null

我尝试在MySQL上创建DB项目,当我尝试添加外键时,它在我尝试创建的所有表上显示错误代码1824。我的代码是:

create table cliente (
id_cliente varchar(20) not null primary key,
nome varchar(50) unique not null,
endereco varchar(70) not null,
celular varchar(15) not null,
id_cartao_cliente int not null,
cod_encomenda_cliente int not null,
constraint fk_cartao foreign key (id_cartao_cliente) references cartao_credito(id_cartao),
constraint fk_encomenda foreign key (cod_encomenda_cliente) references encomenda(cod_encomenda)
) engine = innodb;

create table cartao_credito (
id_cartao int not null primary key,
num_cartao varchar(20) not null,
nome_cartao varchar(30) not null,
mes_validade varchar(2) not null,
ano_validade year,
id_cliente_cartao varchar(20) not null,
constraint fk_cliente foreign key (id_cliente_cartao) references cliente(id_cliente)
) engine = innodb;

create table Encomenda (
cod_encomenda int not null primary key,
tipo varchar(15) not null,
valor_encomenda varchar(10) not null,
local_destino varchar(20) not null,
id_destinatario_encomenda varchar(20) not null,
constraint fk_destinatario foreign key (id_destinatario_encomenda) references destinatario(id_destinatario)
) engine = innodb;

create table movimentacao (
id varchar(50) not null primary key,
local_movimentacao varchar(50) not null,
descricao varchar(30) not null,
data_movimentacao date not null,
hora_movimentacao time not null,
cod_encomenda_movimentacao int not null,
id_entregador_movimentacao varchar(20) not null,
foreign key (cod_encomenda_movimentacao) references encomenda(cod_encomenda),
foreign key (id_entregador_movimentacao) references entregador(id_entregador)
) engine = innodb;

create table entregador (
id_entregador varchar(20) not null primary key,
nome varchar(50) unique not null,
placa_veiculo varchar(10) not null,
tipo_veiculo varchar(15) not null,
cod_encomenda_entregador varchar(50) not null,
id_destinatario_entregador varchar(20) not null,
foreign key (cod_encomenda_entregador) references encomenda(cod_encomenda),
foreign key (id_destinatario_entregador) references destinatario(id_destinatario)
) engine = innodb;

create table destinatario (
id_destinatario varchar(20) not null primary key,
nome  varchar(50) not null unique not null,
endereco varchar(70) not null,
celular varchar(15) not null,
cod_encomenda_destinatario int not null,
foreign key (cod_encomenda_destinatario) references encomenda(cod_encomenda)
) engine = innodb;
我需要这个代码的帮助

注意:所有列都是用葡萄牙语编写的

MySQL错误代码1824是“无法打开引用表”
我相信你会因为你创造的秩序而陷入困境。我发现“Encomenda”没有外键,可能是你开始创作的好地方。

你的设计是错误的。因为当
cliente
中的实体引用
cartao_credito
时,这意味着这两个表之间存在(1到N)关系。因此,无需再次将
cartao_credito
提交给
cliente
。如果需要N对N关系,请在它们之间使用桥接(新表),并使用两个1对N关系

在您的设计中,所有表格相互引用。例如,在第一个两个表中,您只需要一个外键就可以连接这两个表,而不是两个外键