“Selecione o mesmo número de fonte e referência” no SQLYOG
-
24-09-2019 - |
Pergunta
Estou tentando adicionar uma restrição de chave estrangeira via sqlyog e obtendo esse erro, embora eu esteja apenas selecionando uma fonte e uma colunas de referência
Selecione o mesmo número de fonte e referência
Alguém sabe o que isso significa neste caso? Observe que eu tenho um número igual de colunas de origem e referência ...
Solução
Me deparei com o mesmo problema com o Sqlyog v9.01. A mensagem de erro é enganosa e a causa real de um erro pode ser totalmente diferente.
Coisas que verifiquei para resolver isso são as seguintes:
- Verifique a mesa dos tipos de engenharia, deve ser innodb
- Verifique se sua tabela de destino não é a mesma que a fonte.
- Verifique os tipos de dados, o comprimento e o agrupamento de charset de campos referenciados.
- Se você já possui dados em suas tabelas, verifique sua consistência.
Por exemplo, você deve remover todos os dados não relacionados da Tabela B, relacionados à Tabela A
DELETE target FROM B AS target LEFT JOIN A USING(id_A) WHERE A.id_A IS NULL
- Finalmente, no meu caso, tive que lavar as mesas para criar minhas restrições com sucesso.
A criação de restrições manuais da janela de consulta pode fornecer mais informações sobre o seu tipo de erro.
Apenas um lembrete:
ALTER TABLE `B` ADD CONSTRAINT `FK_B` FOREIGN KEY (`id_A`) REFERENCES `A` (`id_A`) ON DELETE CASCADE ;
Boa sorte!