Ir para conteúdo

POWERED BY:

Arquivado

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

LeandroMattos0101

Cannot add or update a child row

Recommended Posts

Boa tarde!

 

Criei uma tabela cliente e outra área do cliente (que é um número inteiro onde o id_areacliente é chave estrangeira da tabela cliente e não é auto_increment).

 

O engraçado (que não é nada engraçado ¬¬) é que quando eu uso um insert into e digito um valor para o id_areacliente maior que 16, ele me dá o seguinte erro:

 

Error code:1452. Cannot add or update a child row: a foreign key constraint fails ('teste'.'cliente', CONSTRAINT 'fk_area_cliente' FOREIGN KEY('id_areacliente') REFERENCES 'area_cliente'('id_areacliente') ON DELETE CASCADE ON UPDATE CASCADE

 

Se eu fizer isso funciona:

 

insert into cliente(id_cliente, id_areacliente, nome_cliente, sobrenome_cliente, dt_nascimento_cliente, endereco_cliente) values (1, 16, 'Teste', 'Testudo', '1980-01-01', 'endereco');

 

Se eu fizer isso ou qualquer número acima de 16 aparece o erro que disse acima:

 

insert into cliente(id_cliente, id_areacliente, nome_cliente, sobrenome_cliente, dt_nascimento_cliente, endereco_cliente) values (2, 17, 'Teste', 'Testudo', '1980-01-01', 'endereco');

 

Alguém sabe o que pode ser???

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Rodrigo Alexsandro
      Olá a todos.
      Estou com uma dúvida.
      Ao exportar um determinado banco de dados para outro servidor, gerei os sqls com estrutura, views e dados de cada tabela do referido banco.
      Ao testar os arquivos aqui antes de enviar para o servidor de produção, não me foi mostrado nenhum erro a respeito das referências e restrições das chaves estrangeiras. Ex:
      ADD CONSTRAINT `caixa_ibfk_1` FOREIGN KEY (`codServBox`) REFERENCES `servicos_processo` (`codServ`) ON UPDATE CASCADE Nessa foreing, mando o campo codServBox da tabela caixa, referenciar o campo codServ da tabela servicos_processo, logo cada registro na tabela caixa, deveria ter um código de serviço que existisse na tabela servicos_processo.
      O estranho é. Ao exportar para o servidor de produção, feliz por não ter gerado nenhum erro nos testes, sou informado que existem erros nas chaves envolvendo estas tabelas.
      Volto ao mesmo banco de dados que fiz os testes e seleciono os campos codServBox que não existissem na tabela servicos_processos e encontro um código de serviço que foi inserido na tabela caixa mas não existe na tabela servicos_processo, mesmo com a constraint acima criada.
      Resumindo, onde está o erro que permitiu, mesmo com uma constraint, inserir um registro com referência inexistente na tabela referenciada pela constraint?
    • Por Rafhael Henrique
      Bom Dia,
       
      Tenho uma tabela 'interesses' e outra 'usuarios'. Na tabela 'interesses' tenho um campo 'usuario_id' que é chave estrangeira da tabela 'usuarios'. O problema é que preciso alterar o tipo do campo 'usuario_id' na tabela de usuários porém não consigo porque recebo um erro dizendo que o campo em questão faz parte de uma foreign key.
       
      Como devo proceder para realizar esta alteração do tipo do campo?
    • Por feliper
      Fala pessoal, estou com uma dificuldade em setar uma chave estrangeira, não sei qual a configuração está errada na tabela que é exibido o seguinte erro: Error creating foreign key on controleID (check data types) segue as configurações da tabela e o comando:
       
      ALTER TABLE `empresas` ADD FOREIGN KEY ( `controleID` ) REFERENCES `sys`.`usuarios` (
      `id` ) ON DELETE CASCADE ON UPDATE CASCADE ;
      CREATE TABLE IF NOT EXISTS `usuarios` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `nome` varchar(50) CHARACTER SET latin1 NOT NULL, `usuario` varchar(25) CHARACTER SET latin1 NOT NULL, `senha` varchar(40) CHARACTER SET latin1 NOT NULL, `email` varchar(100) CHARACTER SET latin1 NOT NULL, `nivel` int(1) unsigned NOT NULL DEFAULT '1', `ativo` tinyint(1) NOT NULL DEFAULT '1', `cadastro` datetime NOT NULL, `telefone` varchar(13) COLLATE latin1_general_ci DEFAULT NULL, `profissao` varchar(50) COLLATE latin1_general_ci NOT NULL, `sobre` text COLLATE latin1_general_ci NOT NULL, `site` varchar(50) COLLATE latin1_general_ci NOT NULL DEFAULT 'http://', `twitter` varchar(50) COLLATE latin1_general_ci NOT NULL DEFAULT 'https://twitter.com/', `facebook` varchar(50) COLLATE latin1_general_ci NOT NULL DEFAULT 'https://facebook.com/', `imagem` varchar(70) COLLATE latin1_general_ci NOT NULL, `recupera_senha` varchar(40) COLLATE latin1_general_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `usuario` (`usuario`), UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `empresas` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `razaoSocial` varchar(70) COLLATE latin1_general_ci NOT NULL, `nomeFantasia` varchar(70) COLLATE latin1_general_ci NOT NULL, `telefone` varchar(13) COLLATE latin1_general_ci NOT NULL, `email` varchar(100) COLLATE latin1_general_ci NOT NULL, `cnpj` varchar(18) COLLATE latin1_general_ci NOT NULL, `info` text COLLATE latin1_general_ci NOT NULL, `estoque` int(1) NOT NULL, `controleID` int(15) NOT NULL, PRIMARY KEY (`id`), KEY `controleID` (`controleID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ; desde já agradeço a ajuda.
    • Por nnunno
      Estou a desenvolver uma aplicação para android onde os dados estão armazenados numa base de dados relacional SQLite.
       
      Fiz a sincronização com uma base de dados MySQL, na web, para onde estou a enviar os dados das diversas tabelas SQLite
       
      O problema é que não sei como fazer para manter o relacionamento entre as tabelas, pois as chaves primárias das tabelas vão ser atualizadas com AUTO_INCREMENT e as chaves estrangeiras nas outras tabelas deixam de estar corretas, pois não são atualizadas para o novo valor das chaves primárias.
       
      Quem me ajuda?
×

Informação importante

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