2015-04-01 45 views
1

嗨,我希望有人可以帮助我的问题是,当我尝试添加一个外键约束我得到这个错误。mariaDB外键中的奇数错误

我的数据库名称是 “危险”

儿童:

CREATE TABLE `child` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `a` INT(11) NULL DEFAULT NULL, 
    `b` INT(11) NULL DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) 
COLLATE='utf8_general_ci' 

家长:

CREATE TABLE `parent` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `alfa` INT(11) NULL DEFAULT NULL, 
    `beta` INT(11) NULL DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) 
COLLATE='utf8_general_ci' 

这些都是创建代码(使用HeidiSQL)

,当我尝试添加外键 与

ALTER TABLE CHILD MODIFY COLUMN A INT,add constraint fk_parent_child FOREIGN KEY(A) REFERENCES PARENT(ALFA); 

ALTER TABLE CHILD add constraint fk1 foreign key (a) references parent(alfa); 

我得到同样的错误

无法创建表 '危险#SQL-d04_53。'(错误:150)

这正在使用MariaDB和mySQL的许多同学发生的事情

事先为造成的不便表示歉意,我希望你们能帮助我们。

回答

-1

错误150通常意味着您按错误顺序更新表。也就是说,您的第一个 INSERT违反了您的second INSERT将修复的FOREIGN KEY约束。

在你的情况下,你在做ALTER而不是INSERT。交换ALTER的订单。如果这不起作用,请检查数据以确定您不会违反FK约束。如果通过了,请继续阅读......

在极端情况下,您可以在插入时关闭外键约束,然后再打开它们。 (但是,这使你容易拧式窗口)。