В настоящее время я пытаюсь добавить таблицу сопоставления, и один из внешних ключей не работает с этим статусом InnoDB:
Не удается найти индекс в ссылочной таблице, где указанные столбцы отображаются как первые столбцы или столбецтипы в таблице и ссылочной таблице не соответствуют ограничениям. Обратите внимание, что тип внутренней памяти ENUM и SET изменился в таблицах, созданных с помощью> = InnoDB-4.1.12, и на такие столбцы в старых таблицах нельзя ссылаться такими столбцами в новых таблицах.
Ссылочная таблица делаетесть первичный ключ. Это в том же Charset / Collation. Он использует InnoDB, и первичный ключ имеет тот же тип, что и FK в новой таблице.
Он имеет индекс с именем PRIMARY, с проверенным столбцом pk и равным # 1.
Этотаблица, на которую ссылаются
CREATE TABLE `oauthtokens` (
`useridentifier` varchar(100) CHARACTER SET utf8 NOT NULL,
`guid` varchar(36) CHARACTER SET utf8 DEFAULT NULL,
`accesstoken` varchar(100) CHARACTER SET utf8 NOT NULL,
`refreshtoken` varchar(100) CHARACTER SET utf8 NOT NULL,
`expirytime` varchar(45) CHARACTER SET utf8 NOT NULL,
`is_master_user` tinyint(1) DEFAULT '0',
PRIMARY KEY (`useridentifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
Это новая таблица, которую я пытаюсь создать
CREATE TABLE `UserRoles` (
`UserId` varchar(100) NOT NULL,
`RoleId` int NOT NULL,
PRIMARY KEY (`UserId`, `RoleId`),
CONSTRAINT `FK_UserRoles_Roles_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `Roles` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_UserRoles_oauthtokens_UserId` FOREIGN KEY (`UserId`) REFERENCES `oauthtokens` (`useridentifier`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
FK_UserRoles_Roles_RoleId работает, но не FK_UserRoles_oauthtokens_UserId.