Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Erro 1822 - Failed to add the foreign key constraint

Olá, eu escrevi o código que relaciona as colunas VENDAS e VENDEDORES e, quando fui testar, recebi o seguinte erro: Error Code: 1822. Failed to add the foreign key constraint. Missing index for constraint 'CE_VENDAS_VENDEDORES' in the referenced table 'vendedores'

Segue o código:

ALTER TABLE VENDAS ADD CONSTRAINT CE_VENDAS_VENDEDORES
FOREIGN KEY (ID_VENDEDOR)
REFERENCES VENDEDORES (ID_VENDEDOR)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Não estou conseguindo identificar o erro. Segue os códigos das colunas VENDA e VENDEDORES se precisar: VENDAS:

create table VENDAS (
id_pedido int not null,
id_vendedor int not null,
id_livro int not null,
qtd_vendida int not null,
data_venda date not null,
primary key (id_vendedor, id_pedido)
);

VENDEDORES:

create table vendedores(
id_vendedor int not null,
nome_vendedor varchar(255) not null,
primary key(id_vendedor)
);

Alguém pode identificar o erro e me dizer por favor?

4 respostas

Olá, Calebe, tudo bem?

Provavelmente pode estar dando algum problema em relação ao nome da tabela estar em minúsculo e o comando em maísculo.

Nesse link, fiz uma simulação corrigindo o nome da tabela e aparentemente funcionou:

https://www.db-fiddle.com/f/3ZEBh186kHGz143c67VkBF/0


ALTER TABLE VENDAS ADD CONSTRAINT CE_VENDAS_VENDEDORES
FOREIGN KEY (ID_VENDEDOR)
REFERENCES vendedores (ID_VENDEDOR)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Eu tentei alterar mas mesmo assim não deu certo, continua dando o mesmo erro. O estranho é que eu colei o meu código no site que vc mandou e deu certo. Será que é algum problema com a minha máquina ou algo do tipo?

Código para referência:

create table VENDAS (
id_pedido int not null,
id_vendedor int not null,
id_livro int not null,
qtd_vendida int not null,
data_venda date not null,
primary key (id_vendedor, id_pedido)
);

create table vendedores(
id_vendedor int not null,
nome_vendedor varchar(255) not null,
primary key(id_vendedor)
);

ALTER TABLE VENDAS ADD CONSTRAINT CE_VENDAS_VENDEDORES
FOREIGN KEY (ID_VENDEDOR)
REFERENCES vendedores (ID_VENDEDOR)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Print das telas: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Consegui arrumar, dropei todas as tabelas criadas e copiei os códigos das atividades e funcionou. Quando se tem os códigos armazenados em algum lugar esse método deve ser o mais fácil no final das contas.

Caramba que estranho, mas que bom que deu certo no final :D Se precisar, estamos aí.