Jump to content
Fórum Script Brasil
  • 0

[DUVIDA] Erro com Foreign Key


palmeira

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...