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.