Kan geen externe sleutelrelatie instellen

I have some problem with MySQL Workbench in that I sometimes can't set foreign keys when creating tables. I say sometimes cause it's not always like this. The thing is when I enter a FK and choose a reference table I can't pick a referenced column. I can't click the check box and the drop down list is empty. I can't really figure out what the problem is cause I see no real difference from the FK's that are working. I have checked data type, name etc and they are correct. I'll provide a SS to elaborate. The green marked key (id_hem) is working ok and the red marks are those that don't.

Screenshot of WB

21

9 antwoord

Ik weet dat dit oud is, maar de gebruikelijke boosdoeners zijn de niet-nul -markering en de niet-ondertekende . Zorg ervoor dat u deze in de kolom met de buitenlandse sleutel vergelijkt als de kolom waarnaar wordt verwezen deze heeft ingeschakeld.

32
toegevoegd
Dit is waarom ik van ZO hou. 3 jaar later en iemand ontdekt wat de oorzaak is van een bug die nog steeds niet verholpen is en lost het op! TY
toegevoegd de auteur hammus, de bron
Dit was mijn probleem. Bedankt! Had de NN en Unsigned ingesteld op de primaire sleutel, maar vergat de buitenlandse sleutel voordat de beperking werd ingesteld
toegevoegd de auteur nils, de bron

Ik had hetzelfde probleem .. dan heb ik de twee tabellen bekeken. Het probleem was het type, het moet in beide tabellen worden vergeleken.

if in foralda table column id_familjer is (INT)
in fkblixten tabelkolom id_familjer zou ook (INT) moeten zijn. als de twee gegevenstypen niet overeenkomen, kan MySQL Workbench de kolom niet als externe sleutel selecteren.

6
toegevoegd

Ik had hetzelfde probleem en het probleem zat in buitenlandse sleutelindexen. MySQL workbench genereert soms te lange namen voor fk-indexen. Handmatige correctie helpt.

3
toegevoegd
Kun je alsjeblieft wat informatie toevoegen op yhow om dit handmatig te corrigeren?
toegevoegd de auteur s.Daniel, de bron

Het kan ook zijn vanwege verschillende collaties. Controleer gewoon of die 2 kolommen dezelfde sortering hebben.

In mijn geval was iemand bij

Tabelstandaard (met gebruik van utf8 algemeen)

de andere met

utf8_unicode_ci

Ik heb die 2 kolommen ingesteld met utf8_unicode_ci en het werkt.

3
toegevoegd

id_familjer is a primary key? set it.
The Referenced Column only display the familjer table primary key.

1
toegevoegd
Ja, het is een PK.
toegevoegd de auteur Sandokan, de bron

Externe sleutel moet dezelfde constanten hebben als de primaire sleutel. U kunt AI, primaire sleutel negeren. Als de primaire sleutel een gebruikersinterface heeft, moet het buitenland ook een gebruikersinterface hebben

UI-> Unsigned Interger AI-> Auto Increment

1
toegevoegd

In mijn geval verander ik de 'collatie' in elke kolom die ik de externe sleutels wil instellen.

Mijn FK kolomcollation is bijvoorbeeld 'utf8', ik verander ook mijn referentietabel in 'utf8'. En het heeft mijn probleem opgelost.

Ik hoop dat het nuttig is.

0
toegevoegd

Ook om mijn twee cent toe te voegen, gebeurt dit ook als u EER-diagrammen in dezelfde databasennaamruimte maakt en twee of meer diagrammen een tabel met dezelfde naam bevatten.

Dus als u probeert een relatie te maken met een tabel (die ook voorkomt in een ander diagram met dezelfde naam), wordt deze tweemaal in de referentietabel weergegeven, beide verwijzen naar uw huidige schema en u kunt niet instellen een verband.

De oplossing is om de tabel in het andere diagram te hernoemen.

0
toegevoegd

Zorg ervoor dat de gegevenstypen in beide tabellen hetzelfde zijn, alsof een int en de andere int (6) is. Het werkt niet omdat er een limiet is. Ik had dit probleem en zo heb ik het opgelost.

0
toegevoegd