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

Foi útil?

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!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top