Domanda

Sto cercando di aggiungere un vincolo di chiave esterna tramite sqlyog, e ottenere questo errore, anche se sono selezionate una sola fonte e una colonne di riferimento

  

Seleziona uguale numero di fonte   e riferimento

Qualcuno sa cosa vuol dire in questo caso? Si noti che io ho lo stesso numero di colonne di origine e di riferimento ...

È stato utile?

Soluzione

mi sono imbattuto lo stesso problema con SQLyog v9.01. Il messaggio di errore è fuorviante e la vera causa di un errore può essere totalmente diversa.

Le cose che ho controllato per risolvere questo sono i seguenti:

  • tipi Controllare tavolo engyne, dovrebbero essere sia InnoDB
  • Verificare se la tabella di destinazione non è la stessa fonte.
  • Controlla i tipi di dati, la lunghezza e charset raccolta di campi di riferimento.
  • Se si dispone già di dati nelle tabelle controlla la sua consistenza.

Per esempio, si dovrebbe rimuovere tutti i dati non correlati dalla tabella B che si riferisce alla tabella A

 DELETE target FROM B AS target LEFT JOIN A USING(id_A) WHERE A.id_A IS NULL
  • Infine quelli nel mio caso ho dovuto tabelle FLUSH per creare i miei vincoli con successo.

creazione vincolo manuale dalla finestra della query può dare ulteriori informazioni sul tipo di errore.

Solo un promemoria:

ALTER TABLE `B` ADD CONSTRAINT `FK_B` FOREIGN KEY (`id_A`) REFERENCES `A` (`id_A`) ON DELETE CASCADE ; 

In bocca al lupo!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top