Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tigredonorte

Problemas com chave estrangeira

Recommended Posts

Não sei qual a inconsistência nos dados para dar este erro: errno 150.

Segue abaixo as tabelas sql:

 

criada corretamente

CREATE TABLE IF NOT EXISTS `framework` . `usuario` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`nome` VARCHAR( 30 ) NOT NULL , 
`login` VARCHAR( 30 ) NOT NULL UNIQUE KEY , 
`senha` VARCHAR( 30 ) NOT NULL , 
`email` VARCHAR( 30 ) NOT NULL UNIQUE KEY , 
`newslatter` INT NOT NULL , 
`acesso`INT NOT NULL
) ENGINE=InnoDB;

 

criada corretamente

CREATE TABLE IF NOT EXISTS `framework` . `galeria.album`(
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`id_usuario` INT NOT NULL , 
`img_capa` VARCHAR( 255 ) NOT NULL , 
`nome` VARCHAR( 50 ) NOT NULL UNIQUE KEY , 
`date`DATE NOT NULL, 
FOREIGN KEY (id_usuario) REFERENCES usuario(id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB; 

 

criada corretamente

CREATE TABLE IF NOT EXISTS `framework` . `loja.produto.categoria` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`nome` VARCHAR( 30 ) NOT NULL UNIQUE KEY , 
`id_pai` INT , 
`utilizavel` INT NOT NULL , 
`autor` VARCHAR( 30 ) NOT NULL , 
`excluir` BIT , 
`data_exclusao`DATE, 
FOREIGN KEY (autor) REFERENCES usuario(login) ON UPDATE CASCADE
)ENGINE=InnoDB;

 

erro ao criar tabela!

CREATE TABLE IF NOT EXISTS `framework` . `loja.produto` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`nome` VARCHAR( 30 ) NOT NULL UNIQUE KEY , 
`preco` FLOAT NOT NULL , 
`estoque` INT NOT NULL , 
`promocao` TINYINT NOT NULL , 
`descricao` LONGTEXT NOT NULL , 
`peso` FLOAT NOT NULL , 
`volume` FLOAT NOT NULL ,
`autor` VARCHAR( 30 ) ,
`excluir` TINYINT , 
`data_exclusao` DATE , 
`dir_img` VARCHAR( 50 ) NOT NULL , 
`id_album` INT , 
`cat_id`INT NOT NULL, 
FOREIGN KEY (autor) REFERENCES usuario(login) ON UPDATE CASCADE, 
FOREIGN KEY (cat_id) REFERENCES loja.produto.categoria(id) ON UPDATE CASCADE ON DELETE SET NULL, 
FOREIGN KEY (id_album) REFERENCES galeria.album(id) ON UPDATE CASCADE ON DELETE SET NULL
) ENGINE=InnoDB

 

 

motivos do erro linhas 17 e 18 (se retirar estas duas linhas a tabela é criada)

FOREIGN KEY (cat_id) REFERENCES loja.produto.categoria(id) ON UPDATE CASCADE ON DELETE SET NULL, 
FOREIGN KEY (id_album) REFERENCES galeria.album(id) ON UPDATE CASCADE ON DELETE SET NULL

Compartilhar este post


Link para o post
Compartilhar em outros sites

CREATE TABLE IF NOT EXISTS `framework` . `loja.produto` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`nome` VARCHAR( 30 ) NOT NULL UNIQUE KEY , 
`preco` FLOAT NOT NULL , 
`estoque` INT NOT NULL , 
`promocao` TINYINT NOT NULL , 
`descricao` LONGTEXT NOT NULL , 
`peso` FLOAT NOT NULL , 
`volume` FLOAT NOT NULL ,
`autor` VARCHAR( 30 ) ,
`excluir` TINYINT , 
`data_exclusao` DATE , 
`dir_img` VARCHAR( 50 ) NOT NULL , 
`id_album` INT , 
`cat_id`INT NOT NULL, 
FOREIGN KEY (autor) REFERENCES usuario(login) ON UPDATE CASCADE, 
FOREIGN KEY (cat_id) REFERENCES `loja.produto.categoria`(id) ON UPDATE CASCADE,  
FOREIGN KEY (id_album) REFERENCES `galeria.album`(id) ON UPDATE CASCADE ON DELETE SET NULL
) ENGINE=InnoDB;

tenta assim champ

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.