Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kod błędu:1005. Nie można utworzyć tabeli „...” (errno:150)

Kod błędu:1005 — w Twoim kodzie jest nieprawidłowe odniesienie do klucza podstawowego

Zwykle jest to spowodowane odwołaniem do pola klucza obcego, które nie istnieje. Możliwe, że popełniłeś błąd literowy, sprawdź, czy powinien być taki sam, lub występuje niezgodność typu pola. Pola powiązane z kluczem obcym muszą dokładnie odpowiadać definicji.

Niektóre znane przyczyny to:

  1. Dwa kluczowe pola typu i/lub rozmiaru nie są dokładnie takie same. Na przykład, jeśli jeden to INT(10) pole klucza musi mieć wartość INT(10) również, a nie INT(11) lub TINYINT . Możesz potwierdzić rozmiar pola za pomocą SHOW CREATE TABLE ponieważ Query Browser czasami pokazuje wizualnie tylko INTEGER dla obu INT(10) i INT(11) . Powinieneś również sprawdzić, czy nie jest on SIGNED a drugi to UNSIGNED . Oboje muszą być dokładnie tacy sami.
  2. Jedno z pól klucza, do którego próbujesz się odwołać, nie ma indeksu i/lub nie jest kluczem podstawowym. Jeśli jedno z pól w relacji nie jest kluczem podstawowym, musisz utworzyć indeks dla tego pola.
  3. Nazwa klucza obcego jest duplikatem już istniejącego klucza. Sprawdź, czy nazwa Twojego klucza obcego jest unikalna w Twojej bazie danych. Po prostu dodaj kilka losowych znaków na końcu nazwy klucza, aby to przetestować.
  4. Jedna lub obie tabele to MyISAM stół. Aby używać kluczy obcych, obie tabele muszą być InnoDB . (Właściwie, jeśli obie tabele to MyISAM wtedy nie otrzymasz komunikatu o błędzie – po prostu nie utworzy klucza.) W przeglądarce zapytań możesz określić typ tabeli.
  5. Podałeś kaskadę ON DELETE SET NULL , ale odpowiednie pole klucza jest ustawione na NOT NULL . Możesz to naprawić, zmieniając kaskadę lub ustawiając pole tak, aby zezwalało na NULL wartości.
  6. Upewnij się, że opcje Zestaw znaków i Sortuj są takie same zarówno na poziomie tabeli, jak i na poziomie poszczególnych pól dla kolumn kluczowych.
  7. Masz wartość domyślną (czyli default=0) w kolumnie klucza obcego
  8. Jedno z pól w relacji jest częścią klucza złożonego (złożonego) i nie ma własnego indywidualnego indeksu. Mimo że pole ma indeks jako część klucza złożonego, musisz utworzyć oddzielny indeks tylko dla tego pola klucza, aby użyć go w ograniczeniu.
  9. Masz błąd składni w ALTER oświadczenie lub błędnie wpisałeś jedną z nazw pól w relacji
  10. Nazwa twojego klucza obcego przekracza maksymalną długość 64 znaków.

Aby uzyskać więcej informacji, zobacz:Błąd MySQL Numer 1005 Nie można utworzyć tabeli



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy używać SET NAMES

  2. Baza danych MySQL jest uszkodzona... Co mam teraz zrobić?

  3. Pobranie tekstu UTF-8 z MySQL w R zwraca ????

  4. Błąd 1046 Nie wybrano bazy danych, jak rozwiązać?

  5. Jak konwertować wielkie litery na małe litery w MySQL