MySQL Workbench Ограничение внешнего ключа сформировано неправильно - PullRequest
0 голосов
/ 11 марта 2019

Я возился с 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;
...