MySQL:错误150使用ON UPDATE SET NULL和ON DELETE SET NULL,为什么?

时间:2011-02-14 13:08:08

标签: mysql mysql-error-1005

我有这个:

DROP TABLE IF EXISTS `sf_guard_user`;


CREATE TABLE `sf_guard_user`
(
    `id` INTEGER(11)  NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(128)  NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `sf_guard_user_U_1` (`username`)
)Type=InnoDB;


DROP TABLE IF EXISTS `shop_orders`;

CREATE TABLE `shop_orders`
(
    `orders_id` INTEGER(11)  NOT NULL AUTO_INCREMENT,
    `sfgu_id` INTEGER(11)  NOT NULL,

    PRIMARY KEY (`orders_id`),
    INDEX `shop_orders_FI_1` (`sfgu_id`),
    CONSTRAINT `shop_orders_FK_1`
        FOREIGN KEY (`sfgu_id`)
        REFERENCES `sf_guard_user` (`id`)
        ON UPDATE SET NULL
        ON DELETE SET NULL,

)Type=InnoDB;

我收到了这个错误:

  

1005 - 无法创建表格   'prueba1.shop_orders'(错误号:150)

如果我不删除ON UPDATE SET NULL和ON DELETE SET NULL。

知道为什么吗?

此致

哈维

1 个答案:

答案 0 :(得分:13)

我认为这是因为您宣布了字段NOT NULL