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?
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?
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.
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.