我在以下create语句中收到错误150:
CREATE TABLE `lazarus`.`warehouses_devices` (
`parent_unit_id` INT UNSIGNED NULL DEFAULT NULL,
`child_unit_id` INT UNSIGNED NULL DEFAULT NULL,
`message_type` VARCHAR(255) NULL,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`value` LONGTEXT NOT NULL,
INDEX `parent_unit_id` (`parent_unit_id` ASC),
INDEX `child_unit_id` (`child_unit_id` ASC),
INDEX `message_type` (`message_type` ASC),
INDEX `date` (`date` ASC),
CONSTRAINT `fk_parent_unit_id_unit_id`
FOREIGN KEY (`parent_unit_id`)
REFERENCES `lazarus`.`logs` (`unit_id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
而且我不确定为什么,我查找错误150并且它说明它的外键问题而且我真的很困惑,因为原因不是很清楚。
确切错误为ERROR 1005: Can't create table 'lazarus.warehouses_devices' (errno: 150)
答案 0 :(得分:1)
考虑到您已经创建了一个名为logs
的表
其中unit_id
设置为主键。很可能由于引用列和引用列之间的数据类型不匹配而导致错误。
然后,您可能需要检查parent_unit_id
中的warehouses_devices
列与logs
(unit_id
)中的数据类型是否相同。
确保lazarus
。warehouses_devices
parent_unit_id INT UNSIGNED
在logs
表中,unit_id
必须为INT UNSIGNED
此外,在您的CREATE TABLE lazarus.warehouses_devices (
中,您正在创建一个名为的约束
fk_parent_unit_id_unit_id
。确保你没有在另一个表中创建了同名的另一个约束。
答案 1 :(得分:0)
InnoDB目前不支持表的外键 用户定义的分区。这意味着没有用户分区的InnoDB table可能包含引用的外键引用或列 外键。
logs
已分区,而warehouses_devices
则未分区。