mysql - MySQL Workbench 外键约束的格式不正确
问题描述
我一直在摆弄 MySQL Workbench 作为一个学习项目,并试图用外键创建一个表。Keys 引用了我数据库中的其他表。被引用的 ID 都是相同类型的“INT(11)”。所有 ID 都是主键并且不为空。
但是我仍然无法转发工程我的数据库,并且正在引发以下错误:“错误:错误 1005:无法创建表testcrm
。role_user
(errno: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;
解决方案
推荐阅读
- html - 用于链接到标题中当前页面部分的语义 HTML 标记
- c# - 将列表传递给另一个表单但无法从中获取值
- docker - 在 apache mesos 上安装 Marathon
- css - ajax调用时转换css丢失
- c++ - 如何使用 boost::spirit::x3 测试字符串的有效双重内容?
- apache-kafka - 在 kafka 中为基于正则表达式的主题指定默认分区和复制因子
- c# - WorkItemHttpClient - 未找到 TFS 工作项或没有读取它的权限
- codeigniter - 在 codeigniter 中的动态数据的数据表中搜索不起作用
- clojure - 无法使用 Midje 模拟 HugSQL 生成的数据库函数
- shell - shell脚本加载jar文件并挂起