Foutcode:1005 -- er is een verkeerde primaire sleutelreferentie in uw code
Meestal is dit te wijten aan een veld met een refererende sleutel waarnaar wordt verwezen dat niet bestaat. Het kan zijn dat u een typefout heeft gemaakt, of controleer of het hetzelfde zou moeten zijn, of er is een veldtype dat niet overeenkomt. Foreign key-linked velden moeten exact overeenkomen met de definities.
Enkele bekende oorzaken kunnen zijn:
- De twee sleutelvelden type en/of grootte komen niet exact overeen. Als één bijvoorbeeld
INT(10)
. is het sleutelveld moetINT(10)
. zijn ook en nietINT(11)
ofTINYINT
. U kunt de veldgrootte bevestigen metSHOW
CREATE
TABLE
omdat de Query-browser soms slechtsINTEGER
laat zien voor beideINT(10)
enINT(11)
. Je moet ook controleren of er een niet isSIGNED
en de andere isUNSIGNED
. Ze moeten allebei precies hetzelfde zijn. - Een van de sleutelvelden waarnaar u probeert te verwijzen, heeft geen index en/of is geen primaire sleutel. Als een van de velden in de relatie geen primaire sleutel is, moet u een index voor dat veld maken.
- De naam van de refererende sleutel is een duplicaat van een reeds bestaande sleutel. Controleer of de naam van uw refererende sleutel uniek is binnen uw database. Voeg gewoon een paar willekeurige tekens toe aan het einde van uw sleutelnaam om dit te testen.
- Een of beide van uw tabellen is een
MyISAM
tafel. Om buitenlandse sleutels te gebruiken, moeten de tabellen beideInnoDB
. zijn . (Eigenlijk, als beide tabellenMyISAM
zijn dan krijg je geen foutmelding - het maakt alleen geen sleutel.) In Query Browser kun je het tabeltype specificeren. - U heeft een cascade
ON
. gespecificeerdDELETE
SET
NULL
, maar het relevante sleutelveld is ingesteld opNOT
NULL
. U kunt dit oplossen door ofwel uw cascade te wijzigen of het veld zo in te stellen datNULL
. wordt toegestaan waarden. - Zorg ervoor dat de opties Tekenset en Sorteren hetzelfde zijn, zowel op tabelniveau als op individueel veldniveau voor de sleutelkolommen.
- U heeft een standaardwaarde (dat wil zeggen, default=0) in uw externe sleutelkolom
- Een van de velden in de relatie maakt deel uit van een combinatie (samengestelde) sleutel en heeft geen eigen individuele index. Hoewel het veld een index heeft als onderdeel van de samengestelde sleutel, moet u een aparte index maken voor alleen dat sleutelveld om het in een beperking te kunnen gebruiken.
- Je hebt een syntaxisfout in je
ALTER
statement of je hebt een van de veldnamen in de relatie verkeerd getypt - De naam van uw externe sleutel overschrijdt de maximale lengte van 64 tekens.
Raadpleeg voor meer informatie:MySQL-foutnummer 1005 Kan tabel niet maken