6
respostas

Error Creating Tables: A table must have at least 1 column?

Está dando esse erro na hora de criar a table.

Error Creating Tables: A table must have at least 1 column?

6 respostas

Olá Thiago, tudo bem? Bom, o erro indica que uma tabela precisa ter pelo menos uma coluna para poder ser criada, então você pode verificar novamente seu comando, se possível coloca ele aqui no tópico pra gente verificar!

Fico aguardando retorno!

Deu certo, estou fazendo um banco de dados aqui em casa ta dando erro Error Code: 1826. Duplicate foreign key constraint name 'cpf' 0.015 sec vcs podem da uma olhada no meu script ?

create database dddrink;

use dddrink;

create table Consumidor( cpf int PRIMARY KEY, nome varchar(50), sobrenome varchar(50), email varchar(50), senha varchar(18), data_nasc date, contato varchar(50), conta_bancaria varchar(50), data_cadastro datetime, fk_id_localizacao int );

create table Localizacao( id_localizacao int PRIMARY KEY NOT NULL, cep int(8), municipio varchar(50), rua varchar(50), bairro varchar(50), numero int, complemento varchar(50), data_cadastro datetime );

create table Distribuidora( cnpj int(14) PRIMARY KEY, razao_social varchar(100), nome_fantasia varchar(100), endereco varchar(100), email varchar(50), senha varchar(18), contato varchar(50), conta_bancaria varchar(50), data_cadastro datetime );

create table Pedido( id_pedido int PRIMARY KEY NOT NULL, data_cadastro datetime, fk_cpf int(11), fk_id_produto int, fk_cnpj int(14), quantidade int, valor double, fk_id_status int(5) );

create table Produto( id_produto int PRIMARY KEY NOT NULL, nome varchar(50), preco float, qntd_estoque int, data_cadastro datetime, fk_cnpj int(14) );

create table Pedido_Produto( id_pedido_produto int PRIMARY KEY NOT NULL, fk_id_pedido int, fk_id_produto int );

create table Status_Pedido( id_status int(5) PRIMARY KEY NOT NULL );

create table Avaliacao( id_avaliacao int PRIMARY KEY NOT NULL, fk_cpf int(11), fk_id_pedido int, satisfacao char(1), -- 1) Péssimo, 2) ruim. 3) Rgular, 4) Bom e 5) Exelente comentario text, data_cadastro datetime);

ALTER TABLE Consumidor ADD CONSTRAINT id_localizacao FOREIGN KEY (fk_id_localizacao) REFERENCES Localizacao (id_localizacao) ON DELETE RESTRICT ON UPDATE CASCADE;

ALTER TABLE Avaliacao ADD CONSTRAINT cpf FOREIGN KEY (fk_cpf) REFERENCES Consumidor (cpf) ON DELETE RESTRICT ON UPDATE CASCADE, ADD CONSTRAINT id_pedido FOREIGN KEY (fk_id_pedido) REFERENCES Pedido (id_pedido) ON DELETE RESTRICT ON UPDATE CASCADE;

ALTER TABLE Pedido ADD CONSTRAINT cpf FOREIGN KEY (fk_cpf) REFERENCES Consumidor (cpf) ON DELETE RESTRICT ON UPDATE CASCADE, ADD CONSTRAINT id_produto FOREIGN KEY (fk_id_produto) REFERENCES Produto (id_produto) ON DELETE RESTRICT ON UPDATE CASCADE, ADD CONSTRAINT cnpj FOREIGN KEY (fk_cnpj) REFERENCES Distribuidora (cnpj) ON DELETE RESTRICT ON UPDATE CASCADE, ADD CONSTRAINT id_status FOREIGN KEY (fk_id_status) REFERENCES Status_Pedido (id_status) ON DELETE RESTRICT ON UPDATE CASCADE;

ALTER TABLE Pedido_Produto ADD CONSTRAINT id_pedido FOREIGN KEY (fk_id_pedido) REFERENCES Pedido (id_pedido) ON DELETE RESTRICT ON UPDATE CASCADE, ADD CONSTRAINT id_produto FOREIGN KEY (fk_id_produto) REFERENCES Produto (id_produto) ON DELETE RESTRICT ON UPDATE CASCADE;

ALTER TABLE Produto ADD CONSTRAINT cnpj FOREIGN KEY (fk_cnpj) REFERENCES Distribuidora (cnpj) ON DELETE RESTRICT ON UPDATE CASCADE;

Percebi q vc usou o mesmo nome de fk qdo fez as alterações nas tabelas Avaliacao e Pedido. Ambas levam o nome de fk_cpf. Altere uma delas e tenta novamente pois as chaves em geral não podem ter o mesmo nome

O problema está no momento de adicionar a chave estrageira como o Fernando falou, tem duas com o mesmo nome (as que estão em negrito):

ALTER TABLE Avaliacao ADD CONSTRAINT cpf FOREIGN KEY (fk_cpf) REFERENCES Consumidor (cpf) ON DELETE RESTRICT ON UPDATE CASCADE, ADD CONSTRAINT id_pedido FOREIGN KEY (fk_id_pedido) REFERENCES Pedido (id_pedido) ON DELETE RESTRICT ON UPDATE CASCADE;

ALTER TABLE Pedido ADD CONSTRAINT cpf FOREIGN KEY (fk_cpf) REFERENCES Consumidor (cpf) ON DELETE RESTRICT ON UPDATE CASCADE, ADD CONSTRAINT id_produto FOREIGN KEY (fk_id_produto) REFERENCES Produto (id_produto) ON DELETE RESTRICT ON UPDATE CASCADE, ADD CONSTRAINT cnpj FOREIGN KEY (fk_cnpj) REFERENCES Distribuidora (cnpj) ON DELETE RESTRICT ON UPDATE CASCADE, ADD CONSTRAINT id_status FOREIGN KEY (fk_id_status) REFERENCES Status_Pedido (id_status) ON DELETE RESTRICT ON UPDATE CASCADE;

Tente alterar uma delas e executar os comandos novamente!

Deu certo aqui Obrigado.

Que legal que deu certo Thiago, sendo assim, você poderia marcar esse tópico como solucionado, assim caso alguém tenha um problema semelhante pode encontrar a resposta facilmente aqui!