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

Błąd SQL (1215):Nie można dodać ograniczenia klucza obcego

Poniższe nie powiedzie się, ponieważ sortowanie jest inne. Dlaczego to pokazuję? Ponieważ OP nie.

Uwaga:zmniejszyłem rozmiar z powodu błędu 1071 przy ustalaniu rozmiaru dla varchar 255 z tym zestawieniem, a następnie automatycznie wybrany zestaw znaków.

Chodzi o to, że jeśli sortowanie jest inne, to nie zadziała.

CREATE TABLE `user_details` (
    `ClientID` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`ClientID`)
)ENGINE=InnoDB;

CREATE TABLE `profilePic` (
    `ClientID` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`ClientID`),
    CONSTRAINT `FK__user_details` FOREIGN KEY (`ClientID`) REFERENCES `user_details` (`ClientID`) ON UPDATE CASCADE ON DELETE CASCADE
)COLLATE='utf8mb4_unicode_ci' ENGINE=InnoDB;

Powyższa awaria jest na poziomie tabeli. Trudniejszy, powodujący błąd 1215 z powodu niezgodności sortowania na poziomie kolumny, można zobaczyć w tej odpowiedzi .

Przeciągając dyskusję do bardziej ogólnych przypadków...

niezależnie od tego, czy próbujesz ustanowić ograniczenie klucza obcego podczas tworzenia tabeli, czy za pomocą ALTER TABLE

takich jak

ALTER TABLE `facility` ADD CONSTRAINT `fkZipcode` 
     FOREIGN KEY (`zipcode`) REFERENCES `allzips`(`zipcode`);

zastosowanie mają następujące zasady.

Ze strony podręcznika MySQL zatytułowanej Korzystanie z KLUCZA OBCEGO Ograniczenia :

Ponadto wspomniane Tabela (nadrzędna) musi mieć klucz z lewej strony dostępny do szybkiego wyszukiwania (weryfikacji). Ten klucz nadrzędny nie musi być PRIMARY a nawet UNIQUE . Ta koncepcja jest opisana w drugiej części poniżej. Pierwsza porcja nawiązuje do pomocnika indeks, który zostanie utworzony w razie potrzeby w odwołaniach stolik (dziecięcy), jeśli to konieczne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz nową bazę danych za pomocą MySQL Workbench

  2. SQL:Powtórz wiersz wyniku wiele razy i ponumeruj wiersze

  3. Brak wyniku w wymaganych polach

  4. Jak ustawić wybraną pozycję w rozwijanym polu?

  5. Jak uzyskać rekord, jeśli Count wynosi zero w Laravel?