Fejlkode:1005 -- der er en forkert primær nøglereference i din kode
Normalt er det på grund af et refereret fremmednøglefelt, som ikke eksisterer. Det kan være, at du har en tastefejl, eller at det skal være det samme, eller at der er en fejltype i felten. Udenlandske nøgle-linkede felter skal matche definitionerne nøjagtigt.
Nogle kendte årsager kan være:
- De to nøglefelters type og/eller størrelse matcher ikke nøjagtigt. For eksempel, hvis en er
INT(10)nøglefeltet skal væreINT(10)ligeså og ikkeINT(11)ellerTINYINT. Du ønsker måske at bekræfte feltstørrelsen ved at brugeSHOWCREATETABLEfordi forespørgselsbrowser nogle gange visuelt kun viserINTEGERfor beggeINT(10)ogINT(11). Du bør også kontrollere, at en ikke erSIGNEDog den anden erUNSIGNED. De skal begge være nøjagtigt ens. - Et af nøglefelterne, som du forsøger at henvise til, har ikke et indeks og/eller er ikke en primær nøgle. Hvis et af felterne i relationen ikke er en primær nøgle, skal du oprette et indeks for det felt.
- Det fremmede nøglenavn er et duplikat af en allerede eksisterende nøgle. Tjek, at navnet på din fremmednøgle er unikt i din database. Du skal blot tilføje et par tilfældige tegn til slutningen af dit nøglenavn for at teste for dette.
- En eller begge dine tabeller er en
MyISAMbord. For at bruge fremmednøgler skal tabellerne begge væreInnoDB. (Faktisk, hvis begge tabeller erMyISAMså får du ikke en fejlmeddelelse - den vil bare ikke oprette nøglen.) I forespørgselsbrowseren kan du angive tabeltypen. - Du har angivet en kaskade
ONDELETESETNULL, men det relevante nøglefelt er sat tilNOTNULL. Du kan rette dette ved enten at ændre din kaskade eller indstille feltet til at tilladeNULLværdier. - Sørg for, at Charset og Collate-indstillingerne er de samme både på tabelniveau og individuelt feltniveau for nøglekolonnerne.
- Du har en standardværdi (det vil sige default=0) på din fremmednøglekolonne
- Et af felterne i relationen er en del af en kombinationsnøgle (sammensat) og har ikke sit eget individuelle indeks. Selvom feltet har et indeks som en del af den sammensatte nøgle, skal du oprette et separat indeks for kun det nøglefelt for at bruge det i en begrænsning.
- Du har en syntaksfejl i din
ALTERsætning eller du har skrevet forkert et af feltnavnene i relationen - Navnet på din fremmednøgle overskrider den maksimale længde på 64 tegn.
For flere detaljer, se:MySQL-fejlnummer 1005 Kan ikke oprette tabel