• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pvalentim

MYSQL XAMPP - Chave estrangeira

4 mensagens neste tópico

Boa noite

Ao criar duas tabelas fiz a sua ligação da seguinte forma e não me deu qualquer erro.

create table funcionarios(

num_funcionario int(6) not null,

cod_departamento int (6),

primary key (num_funcionario),

INDEX (cod_departamento),

foreign key (cod_departamento) references departamentos

)TYPE=InnoDB;

create table departamentos(

cod_departamento int(6) not null,

nome text(10) not null,

primary key (cod_departamento)

)TYPE=InnoDB;

Acontece que não existe integridade referencial. Ou seja, consigo inserir funcionários sem ter qualquer departamento inserido.

Isto não devia acontecer.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não sou muito expert em mysql mas... não devia ser

foreign key (cod_departamento) references departamentos(cod_departamento)

?

Não esquecer que a tabela departamentos tem de ser a primeira a ser criada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E foi de facto criada primeiramente.

Mas já resolvi o problema. Tenho de activar o INNODB que por defeito está desactivo.

Para activar o INNODB basta editar o  ficheiro my.cnf no editor de texto e altere as linhas (basta retirar e pôr o #):

skip-innodb

#innodb_data_home_dir = C:/xampp/xampp/mysql/data/

#innodb_data_file_path = ibdata1:10M:autoextend

#innodb_log_group_home_dir = C:/xampp/xampp/mysql/data/

#innodb_log_arch_dir = C:/xampp/xampp/mysql/data/

#set-variable = innodb_buffer_pool_size=16M

#set-variable = innodb_additional_mem_pool_size=2M

#set-variable = innodb_log_file_size=5M

#set-variable = innodb_log_buffer_size=8M

#innodb_flush_log_at_trx_commit=1

#set-variable = innodb_lock_wait_timeout=50

Para

# skip-innodb

innodb_data_home_dir = C:/xampp/xampp/mysql/data/

innodb_data_file_path = ibdata1:10M:autoextend

innodb_log_group_home_dir = C:/xampp/xampp/mysql/data/

innodb_log_arch_dir = C:/xampp/xampp/mysql/data/

set-variable = innodb_buffer_pool_size=16M

set-variable = innodb_additional_mem_pool_size=2M

set-variable = innodb_log_file_size=5M

set-variable = innodb_log_buffer_size=8M

innodb_flush_log_at_trx_commit=1

set-variable = innodb_lock_wait_timeout=50

As tabelas têm de ser criadas com o tipo INNODB

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Optimo, eu tb utilizo o XAMPP, é um dica a ficar registada.

Cumprimentos,

LuBoc

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora