Boobs Postado Março 16, 2010 Denunciar Share Postado Março 16, 2010 (editado) Oi turma estou precisando relacionar duas tabelas com mySQlforenecedores e contatosCREATE TABLE `fornecedores` ( `idFornecedor` int(11) NOT NULL AUTO_INCREMENT, `nomefantasia` varchar(30) DEFAULT NULL, `razaoSocial` varchar(100) DEFAULT NULL, `CNPJ` char(14) DEFAULT NULL, `InscrEst` char(12) DEFAULT NULL, `enderecoEmpresa` varchar(50) DEFAULT NULL, `telefone1` char(10) DEFAULT NULL, `telefone2` char(10) DEFAULT NULL, `email` varchar(20) DEFAULT NULL, `CEP` char(8) DEFAULT NULL, `idContato` int(11) NOT NULL, PRIMARY KEY (`idFornecedor`) CREATE TABLE `contatos` ( `idContato` int(11) NOT NULL AUTO_INCREMENT, `nomeContato` varchar(30) DEFAULT NULL, `sobreNomeCont` varchar(50) DEFAULT NULL, `telefoneCont` char(10) DEFAULT NULL, `telefoneCont2` char(10) DEFAULT NULL, PRIMARY KEY (`idContato`) estou usando o sqlyog e quando digito ALTER TABLE fornecedores ADD FOREIGN KEY(idContato) REFERENCES contatos(idContato) ON DELETE CASCADE;a mensagem que retorna é essa:Query : alter table fornecedores add foreign key(idContato) references contatos(idContato) on delete cascadeError Code : 1452Cannot add or update a child row: a foreign key constraint fails (`mercearia`.<result 2 when explaining filename '#sql-328_4'>, CONSTRAINT `#sql-328_4_ibfk_1` FOREIGN KEY (`idContato`) REFERENCES `contatos` (`idContato`) ON DELETE CASCADE)Execution Time : 00:00:00:000Transfer Time : 00:00:00:000Total Time : 00:00:00:000Estou começando em mySQL agradeço qualquer ajuda pra saber onde estou errando Editado Março 17, 2010 por Denis Courcy Melhorar entendimento do código Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Março 17, 2010 Denunciar Share Postado Março 17, 2010 Oi, 'Boobs' Você está usando o Engine InnoDB em ambas as tabelas? Se não estiver não vai funcionar.Outra coisa. Não sei se por distração ou na hora de copiar o código para este tópico você esqueceu o ponto-e-virgula ao final de cada instrução.O código correto é:CREATE TABLE `fornecedores` ( `idFornecedor` int(11) NOT NULL AUTO_INCREMENT, `nomefantasia` varchar(30) DEFAULT NULL, `razaoSocial` varchar(100) DEFAULT NULL, `CNPJ` char(14) DEFAULT NULL, `InscrEst` char(12) DEFAULT NULL, `enderecoEmpresa` varchar(50) DEFAULT NULL, `telefone1` char(10) DEFAULT NULL, `telefone2` char(10) DEFAULT NULL, `email` varchar(20) DEFAULT NULL, `CEP` char(8) DEFAULT NULL, `idContato` int(11) NOT NULL, PRIMARY KEY (`idFornecedor`) )ENGINE = InnoDB; CREATE TABLE `contatos` ( `idContato` int(11) NOT NULL AUTO_INCREMENT, `nomeContato` varchar(30) DEFAULT NULL, `sobreNomeCont` varchar(50) DEFAULT NULL, `telefoneCont` char(10) DEFAULT NULL, `telefoneCont2` char(10) DEFAULT NULL, PRIMARY KEY (`idContato`) )ENGINE = InnoDB; -- estou usando o sqlyog e quando digito ALTER TABLE `fornecedores` ADD CONSTRAINT FOREIGN KEY (`idContato`) REFERENCES `contatos` (`idContato`) ON DELETE CASCADE; Link para o comentário Compartilhar em outros sites More sharing options...
0 Boobs Postado Março 17, 2010 Autor Denunciar Share Postado Março 17, 2010 valeu achei o problema - cada tabelaestava com Engine diferente e eu tive que refazer as tabelas em uma ordem diferenteAgora surgiu ouro problema das tabelas relacionadas e o php, mas acho que =isso tenho que postar na outra seção né? Link para o comentário Compartilhar em outros sites More sharing options...
0 Boobs Postado Março 17, 2010 Autor Denunciar Share Postado Março 17, 2010 (editado) Bem de qualquer maneira lá vai:Relacionei essas duas tabelas:CREATE TABLE clientes ( idcli INT NOT NULL AUTO_INCREMENT, nomecli VARCHAR(80), datanasc DATE, cpf CHAR(11), endereco VARCHAR(40), numero VARCHAR(5), bairroc varchar(20), cidadec varchar(30), uf varchar(2), telefone1 CHAR(10), telefone2 CHAR(10), emailcli VARCHAR(30), PRIMARY KEY(idcli) ); CREATE TABLE usuarios ( idusuario INT NOT NULL AUTO_INCREMENT, idcli INT NOT NULL, login VARCHAR(30), senha VARCHAR(30), PRIMARY KEY(idusuario) ); ALTER TABLE usuarios ADD FOREIGN KEY(idcli) REFERENCES clientes(idcli) ON DELETE CASCADE; quando tento fazer uma inclusaão de usuario e senha via php assim: <?php $login=$_POST['usuario']; $senha=$_POST['password']; $link = mysql_connect("127.0.0.1", "root", "root") or die("Não foi possível conectar"); mysql_select_db("mercearia") or die("Não foi possível selecionar o banco de dados"); $consulta = "INSERT INTO usuarios ( login , senha) VALUES ('$login', '$senha')"; $resultado = mysql_query($consulta) or die("Falha na execução da consulta"); echo "Dados adicionados com sucesso"; ?>sempre diz que ouve falha na execução da consulta, isso começou depois que eu relacionei as tabelasme disseram que tenho que colocar um select a mais nesse codigo porque ele não serve para tabels relacionadasQualquer ajuda agradeço galera!!PS o form que envia as informações esta certo, o banco esta ativo e funcionando, as variaveis recebem a infornmação mas nãoincluem mais no banco. Editado Março 18, 2010 por Denis Courcy Melhorar entendimento do código Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Março 18, 2010 Denunciar Share Postado Março 18, 2010 ...ALTER TABLE usuarios ADD FOREIGN KEY(idcli) REFERENCES clientes(idcli) ON DELETE CASCADE;sempre diz que ouve falha na execução da consulta, isso começou depois que eu relacionei as tabelasme disseram que tenho que colocar um select a mais nesse codigo porque ele não serve para tabels relacionadasVamos a resposta.Você errou quando inseriu o alter table acima? Pois, para cadastrar um usuário, agora, você precisa inserir o idcli. Você tornou o usuário dependente de clientes.A soklução não é criar um select como ter "orientaram". Para ficar como está, basta você informar um idcli existente na tabela clientes, quando você fizer o insert de registro em usuário.. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Boobs
Oi turma estou precisando relacionar duas tabelas com mySQl
forenecedores e contatos
estou usando o sqlyog e quando digitoa mensagem que retorna é essa:
Query : alter table fornecedores add foreign key(idContato) references contatos(idContato) on delete cascade
Error Code : 1452
Cannot add or update a child row: a foreign key constraint fails (`mercearia`.<result 2 when explaining filename '#sql-328_4'>, CONSTRAINT `#sql-328_4_ibfk_1` FOREIGN KEY (`idContato`) REFERENCES `contatos` (`idContato`) ON DELETE CASCADE)
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000
Estou começando em mySQL agradeço qualquer ajuda pra saber onde estou errando
Editado por Denis CourcyMelhorar entendimento do código
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados