Ir para conteúdo
Fórum Script Brasil
  • 0

[DUVIDA] Erro com Foreign Key


palmeira

Pergunta

Olá pessoal,

estou tentando importar um arquivo slq pelo phpmyadmin, no entanto encontro o erro:

consulta SQL: 

CREATE TABLE IF NOT EXISTS federacao(

id int NOT NULL AUTO_INCREMENT ,
nome varchar( 60 ) NOT NULL ,
email varchar( 30 ) ,
confederacao varchar( 60 ) ,
FOREIGN KEY ( confederacao ) REFERENCES confederacao( nome ) ON UPDATE CASCADE ON DELETE CASCADE ,
data_cadastro date,
login varchar( 20 ) ,
senha varchar( 16 ) ,
PRIMARY KEY ( id ) );



Mensagens do MySQL :  

#1005 - Can't create table 'mysql.federacao' (errno: 150) (<a href="server_engines.php?engine=InnoDB&page=Status&token=c52ddcf3c3f9cc1c591ba3202872e658">Detalhes...</a>)
Alguém sabe o que está causando o erro? Segue o código inteiro abaixo:
create table if not exists confederacao (
    id int not null auto_increment,
    nome varchar(60) not null,
    primary key (id)
);


create table if not exists federacao (
    id int not null auto_increment,
    nome varchar(60) not null,
    email varchar(30),
    confederacao varchar(60),
    foreign key (confederacao)
        references confederacao(nome)
        on update cascade
        on delete cascade,
    data_cadastro date,
    login varchar(20),
    senha varchar(16),
    primary key (id)
);


create table if not exists empresa (
    id int not null auto_increment,
    nome varchar(60) not null,
    telefone char(13),
    email varchar(30),
    confederacao varchar(60),
    foreign key (confederacao)
        references confederacao(nome)
        on update cascade
        on delete cascade,
    federacao varchar(60),
    foreign key (federacao)
        references federacao(nome)
        on update cascade
        on delete cascade,
    data_cadastro date,
    login varchar(20),
    senha varchar(16),
    primary key (id)
);


create table if not exists empresario (
    id int not null auto_increment,
    nome varchar(60) not null,
    telefone char(13) not null,
    email varchar(30) not null,
    nascimento date not null,
    sexo varchar(9) not null, 
    cargo varchar(30) not null,
    confederacao varchar(60),
    foreign key (confederacao)
        references confederacao(nome)
        on update cascade
        on delete cascade,
    federacao varchar(60),
    foreign key (federacao)
        references federacao(nome)
        on update cascade
        on delete cascade,
    empresa varchar(60) not null,
    foreign key (empresa)
        references empresa(nome)
        on delete cascade
        on update cascade,
    data_entrada date not null,
    data_saida date,
    data_cadastro date not null,
    login varchar(20),
    senha varchar(16),
    primary key (id)
);

create table if not exists perfil_atual (
    id int not null,
    perfil varchar(60),
    login varchar(20),
    primary key (id)
);

insert into confederacao (id,nome) values
(1, '---------------------------------'),
(2, 'Brasil Junior');


insert into federacao (id,nome,email,confederacao,data_cadastro,login,senha) values
(1, '---------------------------------',null,null,null,null,null);


insert into empresa (id,nome,telefone,email,confederacao,federacao,data_cadastro,login,senha) values
(1, '---------------------------------',null,null,null,null,null,null,null);

insert into perfil_atual (id,perfil,login) values
(1, null, null);

Agradeço desde já.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Olá pessoal,

estou tentando importar um arquivo slq pelo phpmyadmin, no entanto encontro o erro:

consulta SQL: 

CREATE TABLE IF NOT EXISTS federacao(

id int NOT NULL AUTO_INCREMENT ,
nome varchar( 60 ) NOT NULL ,
email varchar( 30 ) ,
confederacao varchar( 60 ) ,
FOREIGN KEY ( confederacao ) REFERENCES confederacao( nome ) ON UPDATE CASCADE ON DELETE CASCADE ,
data_cadastro date,
login varchar( 20 ) ,
senha varchar( 16 ) ,
PRIMARY KEY ( id ) );



Mensagens do MySQL :  

#1005 - Can't create table 'mysql.federacao' (errno: 150) (<a href="server_engines.php?engine=InnoDB&page=Status&token=c52ddcf3c3f9cc1c591ba3202872e658">Detalhes...</a>)
Alguém sabe o que está causando o erro? Segue o código inteiro abaixo:
create table if not exists confederacao (
    id int not null auto_increment,
    nome varchar(60) not null,
    primary key (id)
);


create table if not exists federacao (
    id int not null auto_increment,
    nome varchar(60) not null,
    email varchar(30),
    confederacao varchar(60),
    foreign key (confederacao)
        references confederacao(nome)
        on update cascade
        on delete cascade,
    data_cadastro date,
    login varchar(20),
    senha varchar(16),
    primary key (id)
);
...

Oi 'palmeira',

a referencia em uma foreign key deveser feita a chave primária da tabela pai.

No seu caso o atributo id da tabela confederacao deverá esstar na tabela federacao e não onome como você colocou.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...