“Selezionare lo stesso numero di riferimento di origine e” on sqlyog
-
24-09-2019 - |
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 ...
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!