创建下表时,我得到了errno 150。前两个工作正常,但第三个抛出此错误:
ERROR 1005 (HY000): Can't create table 'test2.exercise_type_exercise_groups' (errno: 150)
有任何想法吗?我检查了所有键列的类型,长度,字符集和排序规则是否相同...还有什么问题呢?
先谢谢您的帮助!
CREATE TABLE `exercise_groups` (
`id` VARCHAR(255) NOT NULL,
PRIMARY KEY `pk_exercise_groups` (`id`)
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
CREATE TABLE `exercise_types` (
`id` VARCHAR(255) NOT NULL,
PRIMARY KEY `pk_exercise_types` (`id`)
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
CREATE TABLE `exercise_type_exercise_groups` (
`exercise_type` VARCHAR(255) NOT NULL,
`exercise_group` VARCHAR(255) NOT NULL,
`link_type` ENUM('primary', 'ancillary'),
PRIMARY KEY `pk_exercise_type_exercise_groups` (`exercise_type`, `exercise_group`),
CONSTRAINT `fk_exercise_type_exercise_groups_exercise_type`
FOREIGN KEY (`exercise_type`)
REFERENCES `exercise_type` (`id`),
CONSTRAINT `fk_exercise_type_exercise_groups_exercise_group`
FOREIGN KEY (`exercise_group`)
REFERENCES `exercise_group` (`id`)
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
最佳答案
errno 150
是一般外键错误,很少有帮助。出现这种情况至少有四个原因:
列类型不匹配
该列不是所引用表上的键,或者所引用的列/表不存在(这是您的问题;您拼错了其他表)
任何表都不是InnoDB
。
您正在尝试删除不存在的外键。
关于mysql - VARCHAR字段上的MySQL Errno 150,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14927510/