LeonardoS 0 Denunciar post Postado Abril 30, 2007 Amigos, criei duas tabelas e estou tendo problemas no FKNa verdade criei a tabela FORNECEDORES sem o FK, mas estou tentando dar o ALTER TABLE pra ADD as propriedades de uma FK manualmente e estou encontrando o seguinte erro:Deveria ser assim a primeira: CREATE TABLE fornecedores_grupo_forn ( id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, nome CHAR(60) NOT NULL, obs varchar (255) NULL, PRIMARY KEY (id, nome) )e a FK vai entrar nesta segunda:CREATE TABLE fornecedores ( id SMALLINT UNSIGNED NULL AUTO_INCREMENT, nome varchar(80) NOT NULL, razao varchar(80) NOT NULL, contato varchar(50) NULL, cnpj char(18) NULL, ie varchar(22) NULL, endereco varchar(80) NULL, bairro varchar(30) NULL, municipio varchar(30) NOT NULL, uf char(2) NOT NULL, cep char(9) NULL, telefone char(12) NOT NULL, fax char(12) NULL, celular char(12) NULL, email varchar(30) NULL, obs varchar (255) NULL, grupo_forn SMALLINT UNSIGNED NOT NULL registro_data TIMESTAMP(14) NULL, registro_usuario char (10) NULL, PRIMARY KEY(id, nome), INDEX (grupo_forn), FOREIGN KEY (grupo_forn) REFERENCES fornecedores_grupo_forn(id) ON UPDATE CASCADE ON DELETE RESTRICT )Onde o grupo_forn vai ser alimentado pela primeira tabela.O erro que estou tendo no phpmyadmin ao dar um ALTER TABLE manual é este, pois até então o "FOREIGN KEY (grupo_forn) REFERENCES fornecedores_grupo_forn(id) ON UPDATE CASCADE ON DELETE RESTRICT" da tabela de cima não está inserido no Mysql :Erroconsulta SQL: ALTER TABLE fornecedores ADD CONSTRAINT grupo_forn FOREIGN KEY ( grupo_forn ) REFERENCES fornecedores_grupo_forn( id ) ON UPDATE CASCADE ON DELETE RESTRICT Mensagens do MySQL : #1452 - Cannot add or update a child row: a foreign key constraint fails (`tecnomita`.`#sql-79c_2b`, CONSTRAINT `grupo_forn` FOREIGN KEY (`grupo_forn`) REFERENCES `fornecedores_grupo_forn` (`id`) ON UPDATE CASCADE)Algum santo pra me ajudar? Já andei lendo aqui no forum tópicos relacionados, mas não encontrei nada parecido.orbigado Compartilhar este post Link para o post Compartilhar em outros sites
psycu2003 0 Denunciar post Postado Novembro 7, 2007 Conseguiu solucionar o problema acima amigo? Estou passando pelo mesmo situação, alguém poderia dar ajuda, por favor. Grato. Compartilhar este post Link para o post Compartilhar em outros sites
Wagner Bianchi 0 Denunciar post Postado Novembro 8, 2007 Regras para criação de FK's no MySQL. 1-) As tabelas envolvidas devem ser do mesmo storge engine, ou seja, devem ser InnoDB, Falcon ou Federated; (Erro 150) 2-) Os campos envolvidos devem ter o mesmo tipo de dados, não importando a largura do campo; (Erro 150) 3-) O campo referencia da tabela PAI deve ser ser um campo PK; 4-) No campo foreign key, não deverá contar com valor que não estão na chave-primária (erro 102); Assegurem-se que tudo esteja correto. Abraço!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
ro_digu 0 Denunciar post Postado Março 5, 2008 Também estava com o mesmo problema em um BD local, zerei todo ele. E DESCOBRI O ERRO! A Cardinalidade tem que ser igual para as tabelas relacionadas. Sendo assim remova todos registros caso tenha algum e mantenha a cardinalidade 0 para as duas tabelas relacionadas. Abraxxx Também estava com o mesmo problema em um BD local, zerei todo ele. E DESCOBRI O ERRO! A Cardinalidade tem que ser igual para as tabelas relacionadas. Sendo assim remova todos registros caso tenha algum e mantenha a cardinalidade 0 para as duas tabelas relacionadas. Abraxxx Compartilhar este post Link para o post Compartilhar em outros sites