Ir para conteúdo

POWERED BY:

Arquivado

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

Marcmc

Problema com auto-incremento de primary key e problema com foreign key

Recommended Posts

create table str (
id int not null auto_increment primary key,
strings varchar(20)
)engine=innodb;
create table reg_str (
id int not null auto_increment primary key,
id_str int not null,
atual int not null,
media float not null,
atual_media float not null,
foreign key fk_id(id_str) references str(id) ON UPDATE CASCADE ON DELETE RESTRICT
)engine=innodb;
LOAD DATA LOCAL INFILE '/home/mysql/reg_str.txt'
INTO TABLE reg_str
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
(atual, media, atual_media);
LOAD DATA LOCAL INFILE '/home/mysql/str.txt'
INTO TABLE str
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
(strings);

 

 

 

Como vocês vêem acima, crio 2 tabelas e tento preenchê-las com conteúdo de 2 arquivos. O conteúdo, a princípio, pouco importa. Minhas dúvidas são em cima da PRIMARY KEY e da FOREIGN KEY da tabela reg_str. É o seguinte. Quando faço o "LOAD DATA INFILE" para a tabela "str", fica tudo beleza, o id é auto-incrementado e iniciando em 1. Já quando faço o "LOAD DATA INFILE" para a tabela reg_str, acontecem algumas coisas:

 

1) Aparece a mensagem de erro: ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`lfc`.`reg_str`, CONSTRAINT `reg_str_ibfk_1` FOREIGN KEY (`id_str`) REFERENCES `str` (`id`) ON UPDATE CASCADE)

 

Pesquisando, davam como opção executar o comando:

SET foreign_key_checks = 0;

 

Ok. Executei esse comando, repeti o LOAD DATA INFILE e em seguida, SET foreign_key_checks = 1;

 

2) Só que acontece o seguinte, id de reg_str faz auto-incremento MAS NUNCA INICIA EM 1 e a coluna da foreign key id_str aparece TODA ZERADA.

 

Pergunto:

1) Por que id de reg_str não inicia em 1?

2) Por que a coluna id_str, que é a foreign key, aparece toda zerada? Não deveria pegar os dados da tabela str???

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.