当我尝试创建以下两个表时,我得到了错误150。
CREATE TABLE `mydatabase`.`userstatus`(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(50) NOT NULL ,
`description` VARCHAR(255) ,
PRIMARY KEY (`id`)
);
CREATE TABLE `mydatabase`.users(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`email` VARCHAR(200) NOT NULL ,
`username` VARCHAR(20) NOT NULL DEFAULT 'Unknown' ,
`userstatusid` INT UNSIGNED NOT NULL DEFAULT 2 ,
`datemodified` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`datecreated` DATETIME DEFAULT 0 NOT NULL ,
PRIMARY KEY (`id`),
UNIQUE (username),
UNIQUE (email),
INDEX userstatusid_index (userstatusid),
CONSTRAINT fk_users_userstatus FOREIGN KEY (userstatusid) REFERENCES userstatus(id)
ON DELETE SET NULL
ON UPDATE CASCADE
) ENGINE=INNODB ROW_FORMAT=DEFAULT ;
导致错误的原因是什么?如何解决?
答案 0 :(得分:2)
我把删除设置为null但该列已被定义为非null。我过分关注通常导致errno 150的类型。
答案 1 :(得分:0)
也许您可以尝试在userstatusid上设置唯一键。 有时这可能会有所帮助。
答案 2 :(得分:0)
您可以尝试显示最后一次InnoDB错误的SHOW INNODB STATUS
(例如外键约束定义问题)。
(否则你必须根据错误编号和有限信息猜测,该错误来自语句提供的错误,这是不理想的。)