sql >> Database teknologi >  >> RDS >> Mysql

Fejlkode:1005. Tabellen '...' kan ikke oprettes (fejlnr.:150)

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:

  1. De to nøglefelters type og/eller størrelse matcher ikke nøjagtigt. For eksempel, hvis en er INT(10) nøglefeltet skal være INT(10) ligeså og ikke INT(11) eller TINYINT . Du ønsker måske at bekræfte feltstørrelsen ved at bruge SHOW CREATE TABLE fordi forespørgselsbrowser nogle gange visuelt kun viser INTEGER for begge INT(10) og INT(11) . Du bør også kontrollere, at en ikke er SIGNED og den anden er UNSIGNED . De skal begge være nøjagtigt ens.
  2. 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.
  3. 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.
  4. En eller begge dine tabeller er en MyISAM bord. For at bruge fremmednøgler skal tabellerne begge være InnoDB . (Faktisk, hvis begge tabeller er MyISAM så får du ikke en fejlmeddelelse - den vil bare ikke oprette nøglen.) I forespørgselsbrowseren kan du angive tabeltypen.
  5. Du har angivet en kaskade ON DELETE SET NULL , men det relevante nøglefelt er sat til NOT NULL . Du kan rette dette ved enten at ændre din kaskade eller indstille feltet til at tillade NULL værdier.
  6. Sørg for, at Charset og Collate-indstillingerne er de samme både på tabelniveau og individuelt feltniveau for nøglekolonnerne.
  7. Du har en standardværdi (det vil sige default=0) på din fremmednøglekolonne
  8. 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.
  9. Du har en syntaksfejl i din ALTER sætning eller du har skrevet forkert et af feltnavnene i relationen
  10. Navnet på din fremmednøgle overskrider den maksimale længde på 64 tegn.

For flere detaljer, se:MySQL-fejlnummer 1005 Kan ikke oprette tabel



  1. Migrering af en Oracle-database fra AWS EC2 til AWS RDS, del 3

  2. T-SQL Spring over Tag lagret procedure

  3. Tips til migrering fra MySQL-replikering til MySQL Galera Cluster 4.0

  4. Sådan viser du MySQL-processer