Níže uvedené selže, protože řazení je jiné. Proč to ukazuji? Protože OP to neudělal.
Poznámka:Zmenšil jsem velikost kvůli chybě 1071 při dimenzování pro varchar 255 s tímto řazením a poté automaticky zvolenou znakovou sadou.
Jde o to, že pokud je řazení jiné, nebude to fungovat.
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;
Výše uvedené selhání je na úrovni tabulky. Záludnější způsob, který způsobuje chybu 1215 kvůli neshodám řazení na úrovni sloupců, si můžete prohlédnout v této odpovědi .
Přetažení diskuse k obecnějším případům ...
zda se pokoušíte vytvořit omezení cizího klíče při vytváření tabulky nebo pomocí ALTER TABLE
."
jako například
ALTER TABLE `facility` ADD CONSTRAINT `fkZipcode`
FOREIGN KEY (`zipcode`) REFERENCES `allzips`(`zipcode`);
platí následující.
Z manuálové stránky MySQL s názvem Using FOREIGN KEY Omezení :
Kromě toho odkaz (nadřazená) tabulka musí mít k dispozici klíč zcela vlevo pro rychlé vyhledání (ověření). Tento nadřazený klíč nemusí být PRIMARY
nebo dokonce UNIQUE
. Tento koncept je popsán ve 2. části níže. První část odkazuje na Pomocníka index, který bude v případě potřeby vytvořen v odkazování (dětský) stůl, je-li to nutné.