2011-02-14 58 views
6

我有这样的:MySQL:错误150使用ON UPDATE SET NULL和ON DELETE SET NULL,为什么?

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 - Can't create table 'prueba1.shop_orders' (errno: 150)

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

任何想法为什么?

问候

哈维

回答

13

我想,那是因为你声明的字段NOT NULL

+0

是的,这是真的,我不能宣布`sfgu_id`为NOT NULL。 – ziiweb 2011-02-16 11:29:37