Я возился с MySQL Workbench в качестве учебного проекта и пытался создать таблицу с внешними ключами.
Ключи ссылаются на другие таблицы в моей базе данных.
Идентификаторы, на которые ссылаются, относятся к одному и тому же типу «INT (11)».
Все идентификаторы являются первичными ключами и не равны нулю.
Тем не менее я все еще не могу переслать Engineer мою базу данных, и выдается следующая ошибка: «ОШИБКА: Ошибка 1005: невозможно создать таблицу testcrm
. role_user
(ошибка: 150« Неправильно сформировано ограничение внешнего ключа ») ) "
-- Table `testcrm`.`role_user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `testcrm`.`role_user` (
`role_id` INT(11) UNSIGNED NOT NULL,
`user_id` INT(11) UNSIGNED NOT NULL,
PRIMARY KEY (`role_id`, `user_id`),
INDEX `user_id_idx` (`user_id` ASC),
CONSTRAINT `role_user_role_id`
FOREIGN KEY (`role_id`)
REFERENCES `testcrm`.`roles` (`id`)
ON DELETE CASCADE
ON UPDATE RESTRICT,
CONSTRAINT `role_user_user_id`
FOREIGN KEY (`user_id`)
REFERENCES `testcrm`.`users` (`id`)
ON DELETE CASCADE
ON UPDATE RESTRICT)
ENGINE = InnoDB
Изменить: это мои таблицы пользователей и ролей:
-- -----------------------------------------------------
-- Table `testcrm`.`roles`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `testcrm`.`roles` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(191) NULL DEFAULT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;
-- -----------------------------------------------------
-- Table `testcrm`.`users`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `testcrm`.`users` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(191) NOT NULL,
`email` VARCHAR(191) NOT NULL,
`email_verified_at` TIMESTAMP NULL DEFAULT NULL,
`password` VARCHAR(191) NOT NULL,
`remember_token` VARCHAR(100) NULL DEFAULT NULL,
`created_at` TIMESTAMP NULL DEFAULT NULL,
`updated_at` TIMESTAMP NULL DEFAULT NULL,
UNIQUE INDEX `users_email_unique` (`email` ASC),
PRIMARY KEY (`id`))
ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;